前言:本文中涉及到的技术,只提供思路,严禁用于违法测试
当然哦,还是那句话,还是用靶机吧,希望大家都保护好自己,哈哈哈
以后我会更新各种靶机的渗透,希望大家持续关注,跟着我一起学习吧!!!
我做的很适合初级的学习者,其中不乏趣味性,也有点难度,但总体思路是清晰的,有兴趣的师傅不妨试试。
一、靶机地址
公众号后台回复:靶机三,获取靶机地址。要是打不开去公众号主页加我,我给师傅发。
下载靶机后,双击用vmware打开。
靶机环境:处于NAT网络下的VM虚拟机。
二、靶机渗透
准备一台kali攻击机
1、获取靶场的ip地址
nmap -sP 192.168.44.0/24
另一个也可以用:
sudo arp-scan -l
2、对于目标ip进行端口扫描
nmap -p- 192.168.44.130
对于目标ip进行端口的服务详细信息:
nmap -p- -A 192.168.44.130
3、进行端口利用。
我们发现目标开放了22,80,和31337端口服务。
首先,利用22端口:
但是,我们暂时还是不知道ssh登陆的账号和密码,看看别的地方可不可以入手。
80端口:
发现只有nginx服务器刚搭建好的网站,没什么可以利用的点。
31337端口:
发现没有什么其他的东西,但是我们刚才通过端口扫描的方式发现 31337端口有几个隐藏目录,.什么什么的文件就是隐藏目录,我们现在对其进行目录扫描了。
4、目录扫描
dirb http://192.168.44.130:31337/
发现了几个隐藏目录,说明这几个目录是存在是在家目录下面的,
我们先看看robots.txt文件
里面有/taxes文件,我们也可以去看看这个目录
找到了第一个得分点,flag1。
我们也可以发现,如果是家目录的文件,访问它,就会自动下载,可以利用一下。
着重关注 .ssh这个目录文件
发现有这么几个数据文件,ssh登录三件套,通过刚才的端口扫描,我们可以知道他是免密登录的ssh服务。
我们看这几个数据文件,可以看出来,有ssh的私钥,公钥。
我们去下载下来,看看到底是个什么内容。
可以看到,公钥是正常的,但是我们得到了用户名(simon),但是对于我们来说作用也不是很大,主要还是私钥,但是私钥被加密了,所以说,我们需要把私钥通过解密之后,我们才可以去利用它。
这个时候就需要用上kali内置的一个新工具,ssh2john工具。
ssh2john id_rsa > siyao
对于私钥我们已经成功的变成hash值了。
现在我们就对这个hash值进行破解。
john siyao
成功破解出这个私钥的值。
5、漏洞利用(ssh免密登录)
ssh -i id_rsa simon@192.168.44.130
输入之后,发现文件权限不够,我们重新给id_rsa文件赋权。
chmod 600 id_rsa
重新执行以上命令:
成功通过远程ssh远程,连接上对方服务器。
这个时候,我们去查看当前用户名,再去找找目录下有没有其他什么可以利用的点或者是flag。
6、提权
成功获取了shell,这个时候,我们就需要去提权。
说到提权,我们就要想到两种办法:
sudo -l
发现这个办法是行不通的,或一种思路。
suid提权
参考资料:
https://blog.csdn.net/Fly_hps/article/details/80428173
find / -perm -u=s -type f 2> /dev/null
通过这个命令,我们可以查到当前用户权限下,可以找的suid提权的可疑命令。
找到了这么多,以上所有二进制文件都将以root用户权限执行,因为它们的权限中包含"s",并且对应的是root权限。比如说随便找一个文件去看看。
我们有经验的可以看出来 /usr/local/bin/read_message
,这个文件就很有可能可以利用。
看到,有提示的,你不是 Simon,现在我们输入Simon,看看可不可以进去。
可以看到,成功进去了。看到提示,发现已经把源码给了我们家目录了,我们去看看。
可以去看看他的源码,看看有没有其他的什么漏洞。
// You're getting close! Here's another flag:
// flag2{use_the_source_luke}
int main(int argc, char *argv[]) {
char program[] = "/usr/local/sbin/message";
char buf[20];
char authorized[] = "Simon";
printf("What is your name?n");
gets(buf);
// Only compare first five chars to save precious cycles:
if (!strncmp(authorized, buf, 5)) {
printf("Hello %s! Here is your message:nn", buf);
// This is safe as the user can't mess with the binary location:
execve(program, NULL, NULL);
} else {
printf("Sorry %s, you're not %s! The Internet Police have been informed of this violation.n", buf, authorized);
exit(EXIT_FAILURE);
}
}
通过分析以上代码,我们可以看到有flag2。得分。
继续分析代码,分析if语句。发现只判断用户输入的前面五位,前五位正确的话,他依然会正确的执行。他只给了20位,所以说超过20位的部分,会执行对应的功能。
输入:Simon11111222223333/bin/sh
我们发现提权成功。
到此,所有的flag都被找出来了,实验结束。
三、总结
以上为我的一些做题笔记,大佬勿喷。
主要是一个大致流程,很多技术还没涉及到,大家思想不要局限了。后续打其他靶场会更加丰富!
感谢各位大佬们关注LHACK安全,正在努力的进步中,后续会坚持更新渗透漏洞思路分享、好用工具分享以及挖掘SRC思路等文章,希望能得到各位师傅们的关注与支持。想加入交流群的师傅们,欢迎加我,我拉师傅进群。
往期回顾
原文始发于微信公众号(LHACK安全):渗透实战(三)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论