一、主机发现

arp-scan -l

那么

靶机ip:192.168.166.141

kali的ip:192.168.166.128

二、信息收集

靶机开放的端口,端口运行的服务以及操作系统类型检测

nmap -sT -O -sV -p- 192.168.166.141

22,80端口开放,22是ssh服务,80是http服务,操作系统探测是Linux 3.2-4.9。

使用浏览器对80端口进行查看

一个简单的页面,但是有两个输入框并且进行说,请展示你的sql技巧,很明显,这里有sql注入漏洞,但是两边都输入' or 1=1#(万能密码),发现没有什么用处

先进行一个目录爆破

对80端口进行目录爆破

dirsearch -u http://192.168.166.141/

发现了很多的目录,那么这里对一些目录进行访问

/add.php

像是一个文件上传的点

/c

没有信息

/in

一个phpinfo(),但是最下面暴露了其路径/var/www/in.php

/phpmy

phpmyadmin的登录后台,使用弱口令,root/admin,发现登录不进去

既然有phpmy的路径,那么去对这个路径及逆行爆破,看是否有文件配置信息

dirsearch -u http://192.168.166.141/phpmy/

其中,发现有/phpmy/config.inc和/phpmy/config.inc.php文件

/test.php

提示file为空,那么猜测这里可能有文件包含

三、web渗透

攻击路线一:通过文件包含进行渗透,获取账号密码

信息收集中,有几个值得注意的路径,/test.php,/phpmy,/add.php

/test.php中可能存在文件包含,那么先对其进行探测,/test.php中提到file为空,那么在url中添加一个file变量,数值为../../../../../etc/passwd

发现没有回显信息和刚才一样

更换http的提交方式,使用burp的拦截功能,将数据包发送到repeater模块

右键change request method,更改提交方式

发现返回了/etc/passwd的内容,

因为路径爆破的过程中有发现一些目录或者文件,那么利用这里的文件包含进行读取

in.php(前面访问in路径的时候暴露出来的文件名称)

发现返回的并不是phpinfo页面,而是源代码,那么这里应该不是文件包含漏洞,应该是任意文件下载漏洞

文件包含是将文件的内容解析加载出来,而任意文件下载是将文件源代码展示出来

当访问到c.php的时候,发现有数据库的账号密码泄露

使用账号密码可以登录phpmy的后台

在后台ica_lab表中的auto中,发现另外一个账号密码,猜测应该是index.php的sql技巧那里的,因为这个数据库是为这个页面进行数据存储的

使用文件任意下载进行查看phpmy的配置文件,/phpmy/config.inc.php文件(/phpmy/config.inc查看表示没有该文件)

在配置文件中,又发现了账号密码

尝试使用该账号密码登录phpmy

发现登录不进去,从前面的信息收集中,除了22端口之外,没有可以登录的地方了(80端口的默认面的账号密码在数据库中看到了,如果80端口的默认页面有这个账号密码,应该数据库中看得到)

使用ssh登录

ssh root@192.168.166.141

发现直接得到了root账号的权限(路线一就是这样子)

攻击路线二:sql注入,文件上传,文件包含

路线二中,先看sql注入

sql注入有三种方法可以直接登录

1、利用上面的任意文件下载漏洞,查看到phpmy的账号密码,登录phpmy之后auto中看到的账号密码可以登录

2、使用任意文件下载读取index.php的源码,构造万能密码登录

sql语句

$uname=str_replace(''','',urldecode($POST['un']));$pass=str_replace(''','',urldecode($POST['ps']));$run='select * from auth where  pass=''.$pass.'' and uname=''.$uname.''';

可以构造万能密码 :

username填 ' or 1=1#

password 填 \'

SQL语句变成了'select * from auth where  pass=‘ ’ and uname=‘ or 1=1#

3、使用sql注入的一些万能密码的payload结合burp进行注入

因为这个过程需要用到很多的payload,直接显示找到了万能密码的payload文件

seclists中的sql的payload文件,/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txt(对应username)

burp专业版中自带的针对SQL注入的字典(对应password)

使用以上的三种方法可以直接登录,登录成功,跳转到panel.php,如果没有登陆,直接访问panel.php,会跳回index.php

来到panel.php

这里可以展示用户

还可以添加用户,添加用户这里可以上传图片,但是看到这个上传的感觉很熟悉,和前面的add.php一样

猜测添加用户这里调用了add.php

先进行添加用户

上传一个php的一句话木马,shell.php,只允许jpg,png,gif的图片格式上传

将一句话木马更改为jpg格式,通过burp,更改Content-Type和文件头

上传成功

查看账户,确实多了aa这个账户

访问shell.jpg并且通过cmd传入id这个值,发现没有信息显示,那么shell.jpg没有被解析成PHP代码并执行

前面看到添加用户那里,可能调用add.php这个文件,那么抓取添加文件的数据包,发现通过post方式传入了一个add的数值,尝试一下这里是否有文件包含

将add换成in.php(in.php这里为phpinfo的页面)看是否会回显phpinfo的页面

发现返回了phpinfo的页面

尝试是否有远程包含,直接包含它存在的图片,没有返回图片信息,那么应该不存在远程包含

这里是否可以将文件解析成PHP代码并执行,将上传的一句话的木马的地址更换这个地方,并传入id这个数值

发现没有返回id这个命令执行后的信息,那么这里是不是不允许传入参数,但是有执行这个文件呢

上传一个反弹shell(仍然以图片格式上传)

添加成功

利用文件包含,尝试一下是否有执行(监听1234端口)

成功获取初始shell

四、提权

攻击路线二的提权

python -c 'import pty;pty.spawn("/bin/bash")'    提高shell的交互性

输入uname -a

发现linux版本很低

searchsploit 3.13.0

发现有内核提权脚本,将脚本下载到传输到靶机上(记得寻找一个有权限的目录,如tmp)

gcc 37292.c -o exp   编译

运行exp(有警告和报错是正常的)

获得root权限