存档

‘网站防护’ 分类的存档

ldd 的一个安全问题

2011年6月17日 admin     722 views 没有评论

来源:http://coolshell.cn/articles/1626.html

2009年10月28日 陈皓

我们知道“ldd”这个命令主要是被程序员或是管理员用来查看可执行文件所依赖的动态链接库的。是的,这就是这个命令的用处。可是,这个命令比你想 像的要危险得多,也许很多黑客通过ldd的安全问题来攻击你的服务器。其实,ldd的安全问题存在很长的时间了,但居然没有被官方文档所记录来下,这听上 去更加难以理解了。怎么?是不是听起来有点不可思议?下面,让我为你细细道来。

首先,我们先来了解一下,我们怎么来使用ldd的,请你看一下下面的几个命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(1) $ ldd /bin/grep
linux-gate.so.1 =>  (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7eca000)
/lib/ld-linux.so.2 (0xb801e000)
(2) $ LD_TRACE_LOADED_OBJECTS=1 /bin/grep
linux-gate.so.1 =>  (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7e30000)
/lib/ld-linux.so.2 (0xb7f84000)
(3) $ LD_TRACE_LOADED_OBJECTS=1 /lib/ld-linux.so.2 /bin/grep
linux-gate.so.1 =>  (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7f7c000)
/lib/ld-linux.so.2 (0xb80d0000)

第(1)个命令,我们运行了 `ldd` 于 `/bin/grep`。我们可以看到命令的输出是我们想要的,那就是 `/bin/grep` 所依赖的动态链接库。

第(2)个命令设置了一个叫 LD_TRACE_LOADED_OBJECTS 的环境变量,然后就好像在运行命令 `/bin/grep` (但其实并不是)。 其运行结果和ldd的输出是一样的!

第(3)个命令也是设置了环境变量 LD_TRACE_LOADED_OBJECTS ,然后调用了动态链接库 `ld-linux.so` 并把 `/bin/grep` 作为参数传给它。我们发现,其输出结果还是和前面两个一样的。

 

具体发生了什么?

对于第二个和第三个命令来说,好像是对 `ldd` 的一个包装或是一个隐式调用。对于第二个和第三个命令来说, `/bin/grep` 这个命令就根本没有被运行。这是一个GNU动态载入器的怪异的特性。如果其注意到环境变量LD_TRACE_LOADED_OBJECTS 被设置了,那么它就不会去执行那个可运行的程序,而去输出这个可执行程序所依赖的动态链接库 (在BSD 系统上的`ldd` 是一个C 程序)。

如果你使用的是Linux,那么,你可以去看看 `ldd` 程序,你会发现这是一个 bash 的脚本。如果你仔细查看这个脚本的源码,你会发现,第二个命令和第三个命令的差别就在于 `ld-linux.so` 装载器是否可以被`ldd`所装载,如果不能,那就是第二个命令,如果而的话,那就是第三个命令。

所以,如果我们可以让`ld-linux.so` 装载器失效的话,或是让别的装载器来取代这个系统默认的动态链接库的话,那么我们就可以让 `ldd`来载入并运行我们想要程序了——使用不同的载装器并且不处理LD_TRACE_LOADED_OBJECTS 环境变量,而是直接运行程序。

例如,你可以创建一个具有恶意的程序,如: ~/app/bin/exec 并且使用他自己的装载器 ~/app/lib/loader.so。如果某人(比如超级用户root) 运行了 `ldd /home/you/app/bin/exec` ,于是,他就玩完了。因为,那并不会列出所依赖的动态链接库,而是,直接执行你的那个恶意程序,这相当于,那个用户给了你他的授权。

编译一个新的装载器

下载 uClibc C库。这是一个相当漂亮的代码,并且可以非常容易地修改一下源代码,使其忽略LD_TRACE_LOADED_OBJECTS 检查。

1
2
3
$ mkdir app
$ cd app
app$ wget 'http://www.uclibc.org/downloads/uClibc-0.9.30.1.tar.bz2'

解压这个包,并执行 `make menuconfig`,选项你的平台架构(比如:i386),剩下的事情保持不变。

1
2
3
4
$ bunzip2 < uClibc-0.9.30.1.tar.bz2 | tar -vx
$ rm -rf uClibc-0.9.30.1.tar.bz2
$ cd uClibc-0.9.30.1
$ make menuconfig

编辑 .config 并设置目标安装目录:到 `/home/you/app/uclibc`,
把下面两行

1
2
RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/"
DEVEL_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/usr/"

改成

1
2
RUNTIME_PREFIX="/home/you/app/uclibc/"
DEVEL_PREFIX="/home/you/app/uclibc/usr/"

阅读全文…

linux shell小技巧

2010年11月3日 admin     1,811 views 2 条评论

来源:http://blog.csdn.net/eroswang/archive/2009/07/28/4388837.aspx

1.删除0字节文件
find -type f -size 0 -exec rm -rf {} \;

2.查看进程
按内存从大到小排列
ps -e   -o “%C   : %p : %z : %a”|sort -k5 -nr

3.按cpu利用率从大到小排列
ps -e   -o “%C   : %p : %z : %a”|sort   -nr

4.打印说cache里的URL
grep -r -a   jpg /data/cache/* | strings | grep “http:” | awk -F’http:’ ‘{print “http:”$2;}’

5.查看http的并发请求数及其TCP连接状态:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

6. sed -i ‘/Root/s/no/yes/’ /etc/ssh/sshd_config   sed在这个文里Root的一行,匹配Root一行,将no替换成yes.

7.1.如何杀掉mysql进程:
ps aux|grep mysql|grep -v grep|awk ‘{print $2}’|xargs kill -9 (从中了解到awk的用途)

killall -TERM mysqld

kill -9 `cat /usr/local/apache2/logs/httpd.pid`   试试查杀进程PID

8.显示运行3级别开启的服务:
ls /etc/rc3.d/S* |cut -c 15-   (从中了解到cut的用途,截取数据)

9.如何在编写SHELL显示多个信息,用EOF
cat << EOF
+————————————————————–+
|       === Welcome to Tunoff services ===                |
+————————————————————–+
EOF

10. for 的巧用(如给mysql建软链接)
cd /usr/local/mysql/bin
for i in *
do ln /usr/local/mysql/bin/$i /usr/bin/$i
done

11. 取IP地址:
ifconfig eth0 |grep “inet addr:” |awk ‘{print $2}’|cut -c 6-   或者

ifconfig   | grep ‘inet addr:’| grep -v ’127.0.0.1′ | cut -d: -f2 | awk ‘{ print $1}’
阅读全文…

分类: 网站防护 标签: ,

一个Linux下的入侵响应案例

2010年11月3日 admin     2,513 views 2 条评论

转载,原作 者:郑先伟

作者单位:CERNET应急响应组

受到攻击

最近,某校校园网管理员接到国外用户投诉,说该校园网中的一台视频服务器正在对外进行非法的TCP 443端口扫描。该视频服务器的地址是192.168.1.10,操作系统为redhat7.3,对外开放端口为TCP 22、80、443。
然而,管理员在机器上经过重重仔细检查,未观察到任何异常。在此情况下,我们接受请求帮助他们检查机器。

初步检测

我们首先在交换机上对该服务器的网络流量进行了镜像,发现该主机确实存在对外443端口的扫描流量,但是登录到系统上使用netstat -an命令却看不到任何与443端口相关的网络连接,使用psef命令也没有看到系统中有任何可疑的进程。因此,我们怀疑系统中可能被安装了 rootkit(注1)。

为了证实这一点,我们将系统中的ps命令拷贝到另外一台可信的操作系统版本相同的机器上(当然如果你在系统安装初始就维护了一张系统命令md5值表的话,那么你现在只需从别的地方拷一个md5sum程序过来就可以),使用md5sum命令对两个ps进行比对发现192.168.1.10上的ps已经被人修改过,因此可以断定系统确实是被入侵并安装了rootkit级的后门程序。
阅读全文…

分类: 网站防护 标签: ,

Linux控制台(文本模式)下提高工作效率的快捷键

2010年11月3日 admin     1,206 views 没有评论

来源:http://blog.csdn.net/eroswang/archive/2009/02/17/3903191.aspx

在Linux环境里,有一些按键有特殊的含意。
# Ctrl-U: 擦除一行光标前面的部分。
# Ctrl-H: 擦除光标前面的一个字符。
# Ctrl-D: 终止输入。(退出 shell,如果您正在使用 shell 的话)。
# Ctrl-C: 终止当前正在运行的程序。
# Ctrl-Z: 暂停程序。
&”)
# Ctrl-S: 停止向屏幕输出。
# Ctrl-Q: 重新激活向屏幕输出。

默认的 shell,`bash’, 有历史编辑和 tab 补齐功能。

# up-arrow: 开始历史命令搜索。
# Ctrl-R: 开始增量历史命令搜索,可以按照关键字查查自己用过哪些命令。
# TAB: 完整的把文件名输入到命令行。
# Ctrl-V TAB: 输入 TAB 而不是扩展命令行。
# Ctrl + P – 上一条命令
# Ctrl + N – 下一条命令
# Ctrl-U: 擦除一行光标前面的部分。
# Ctrl + Y – 粘贴前一Ctrl+U类命令删除的字符 ,是粘贴不是撤销啊!

下面的应用可能稍稍高级一点点
# !! – 上一条命令
# !-n – 倒数第N条历史命令
# !-n:p – 打印上一条命令(不执行)
# !?string?- 最新一条含有“string”的命令
# !-n:gs/str1/str2/ – 将倒数第N条命令的str1替换为str2,并执行(若不加g,则仅替换第一个)
阅读全文…

一些Vim使用的小技巧

2010年11月3日 admin     1,318 views 没有评论

From:http://blog.csdn.net/eroswang
太简单的就不说了,随便找手册可以找到,这里就说说一些小技巧吧,也是最近使用给逼出来的学习,呵呵,不过挺方便的。

1. 全局替换
(1) v + G + $ 选定全部,然后输入 :s/原始字符串/目标字符串/
(2) :%s/原始字符串/目标字符串/

2. 清除页面中所有行尾的空白符:
:%s/\s\+$//

3. 清除所有空白
:%s/\(\s*\n\)\+/\r/

4. 去掉所有的//注释
:%s!\s*//.*!!

5. 去掉所有的/* */注释
:%s!\s*/\*\_.\{-}\*/\s*! !

6. 做某些内部数据重复替换
有些时候我们需要组织一些批量的数据进行命令行的执行,比如我们需要利用前面的数据生成后面的数据,例如这样的数据:
/var/database/aaa.txt
/var/database/bbb.txt
/var/database/ccc.txt

我想变成一个个的指令,比如变成一个个复制命令,复制到但前目录,那么可以执行:
:%s/\(.*base\/\)\(.*\.txt\)/cp \1\2 \.\/\2/
阅读全文…

分类: 网站防护 标签: ,

windows命令行下最大化、最小化打开网址

2010年5月17日 admin     2,469 views 没有评论

命令行(cmd.exe)下运行浏览器打开网址如 Http://www.0x50sec.org 

可以用如下命令:

使用IE浏览器打开 www.0x50sec.org

explorer Http://www.0x50sec.org 

使用默认浏览器打开 www.0x50sec.org

start Http://www.0x50sec.org

最大化、最小化运行浏览器打开网址

start /max explorer Http://www.0x50sec.org

start /min explorer Http://www.0x50sec.org

分类: 网站防护 标签:

Linux服务器加固Paper

2010年4月15日 admin     2,299 views 1 条评论

beach翻译的,继续分享
目录:
1.BIOS
2.SSH安全
3.禁用telnet
4.禁用代码编译
5.ProFTP
6.TCPwrappers
7.创建一个SU组
8.root通知
9.history安全
10.欢迎信息
11.禁用所有特殊账户
12.chmod危险文件
13.指定允许root登陆的TTY设备
14.选择一个安全的密码
15.检查Rootkit
16.安装补丁
17.隐藏Apache信息
18.隐藏php信息
19.关闭不使用的服务
20.检测监听中的端口
21.关闭打开的端口和服务
22.删除不用的rpm包
23.禁用危险的php函数
24.安装配置防火墙
25.安装和配置BFD
26.内核加固(sysctl.conf)
27.更改SSH端口
28./tmp /var/tmp,/dev/shm分区安全
29.PHP IDS
阅读全文…

linux下.htaccess使用说明

2010年4月15日 admin     1,696 views 没有评论

来源:milsec.net

作者kindle

.htaccess可以做大量范围的事情,包括:文件夹密码保护、用户自动重新指向、自定义错误页面、变更你的文件扩展名、屏蔽特定的用户IP地址、只允许特定的IP地址、停止目录表以及使用其他文件作为index文件,等等……

1. Introduction 介绍
文件名 .htaccess 属性 644 (RW-R–R–)
htaccess会影响它所在目录下的所有子目录
注意大多数内容都要求保持在一行之内,不要换行,否则会引起错误

2. Error Documents 错误文档
Official document: ErrorDocument Directive
ErrorDocument code document
例子
ErrorDocument 400 /errors/badrequest.html
ErrorDocument 404 http://yoursite/errors/notfound.html
ErrorDocument 401 “Authorization Required”
(注意之后内容如果出现的双引号需要转义为 \”)
常见HTTP状态码
Successful Client Requests
200 OK
201 Created
202 Accepted
203 Non-Authorative Information
204 No Content
205 Reset Content
206 Partial Content
Client Request Redirected
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy
Client Request Errors
400 Bad Request
401 Authorization Required

402 Payment Required (not used yet)
阅读全文…

Linux网络安全之经验谈

2010年4月15日 admin     1,864 views 1 条评论

来源:milsec.net
关于分区
一个潜在的黑客如果要攻击你的Linux服务器,他首先就会尝试缓冲区溢出。在过去的几年中,以缓冲区溢出为类型的安全漏洞是最为常见的一种形式了。更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以轻易使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权!

为了防止此类攻击,我们从安装系统时就应该注意。如果用root分区纪录数据,如log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区被溢出。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还有建议为/home单独分一个区,这样他们就不能填满/分区了,从而就避免了部分针对 Linux分区溢出的恶意攻击。

关于BIOS

记着要在BIOS设置中设定一个BIOS密码,不接收软盘启动。这样可以阻止不怀好意的人用专门的启动盘启动你的Linux系统,并避免别人更改BIOS设置,如更改软盘启动设置或不弹出密码框直接启动服务器等等。
阅读全文…

Apache+Php Web安全配置全攻略

2010年4月15日 admin     2,042 views 没有评论

apache+php Web安全配置全攻略

kindle整理
个人整理算不上原创,mysql的略过不说了

apache方面:

1.编译源代码,修改默认的banner

2.修改默认的http状态响应码404,503等默认页面

3.访问特殊目录需要密码.htaccess

4.关闭索引目录options -Indexes

5.关闭CGI执行程序options -ExecCGI

6.apache限制目录php_admin_value open_basedir /var/www

7.apache的php扩展名解析漏洞
apache配置文件,禁止.php.这样的文件执行,配置文件里面加入

<Files ~ “\.(php.|php3.)”>
Order Allow,Deny
Deny from all
</Files>

8.apache设置上传目录无执行权限
关闭路径/www/home/upload的php解析:
<Directory “/www/home/upload”>
<Files ~ “.php”>
Order allow,deny
Deny from all
</Files>
</Directory>

PHP方面:
阅读全文…