哇,我要炸了!二次元永不为奴。
冬至日
第一次在冬至和朋友一起出去吃饺子。以后不会有这样的日子了。
今天下午看了web server配置安全。
作为在服务器界的老大,apapche的安全最值得我们关注。检查apache安全的第一件事就是检查module使用情况,根据最小权限原则,应该减少不必要的module,使用module使还应该检查是否存在安全漏洞。第二件事是不能以root或admin权限运行apache,在有管理员权限运行时黑客入侵成功后会直接获得高权限,在某些bug出现时也会造成很高的风险。
Nginx服务器相比于apache服务器的关注module安全,Nginx更关注软件自身的安全。ginx服务器相比于apache服务器的关注module安全,nginx更关注软件自身的安全。
Jboss是java2EE一个流行的容器,在jboss安装时会有一个管理后台JMX-console,通过8080端口访问。默认安装时访问这个后台是不要认证的。攻击者可以通过deploymentscanner远程加载一个war包(写好的web应用),在deploymentscanner下次执行时将部署成功。同样BeanShellDeploy也可以完成部署war包。
Tomcat也是一个流行的容器。和JMX-console类似,管理员也可以在Tomcat部署war包。但在Tomcat里部署需要管理员权限,需要好好管理权限。
我葱真好
php安全没怎么看懂…对很多函数都不了解…嗯…主要可以分为三种漏洞:文件包含漏洞,变量覆盖漏洞,代码执行漏洞。
1.第一种文件包含漏洞主要包含require(),require_once(),include(),include_once()这四个引入文件的函数。这种漏洞又可分为本地文件包涵和远程文件包含。
能够打开并包涵(引入)本地文件的漏洞叫本地文件包含漏洞。改变文件的参数和使用截断(\0)达成攻击。本地文件包含漏洞能够读取敏感文件或者服务器端脚本源代码,形成威胁。为了防止攻击者访问任意文件,可以配置open_basedir的值或者使用枚举来防止。本地文件可以通过上传或伪协议等来执行php代码。
若allow_url_include=ON的时候,include和require可以加载远程代码,成为远程文件包含漏洞。截断符号可以使用?或者%00。
2.变量覆盖有很多不同的方法。全局变量覆盖发生在register_globaks=ON时,当注入变量覆盖全局变量时,可以成功控制全局变量的值。extract()覆盖,当导入符号的过程中与已存在变量产生冲突,默认覆盖,可以通过设置为EXTR_SKIP(跳过)保证不备覆盖。其余类似于extract()。
3.代码执行漏洞有两个关键条件:用户控制输入;存在执行代码的危险函数。危险函数执行代码,危险函数主要是eval(),popen(),assert(),system()等。如果文件写操作的内容用户可以控制,很容易造成文件写入执行代码。其他执行代码的方式还有文件包含,本地文件写入,preg_replace在\e模式下,回调函数执行等。
可以通过修改php.ini中一些安全相关的参数定制安全的php环境。
愿时光没有磨平我的麟角
也算可以专心做事了,可不能给自己丢脸啊。Be stronger.
昨天看了拒绝服务攻击ddos。ddos攻击的本质是对有限资源的无限滥用,利用合理的请求造成资源过载,导致服务器崩溃服务不可用。常见的ddos攻击有syn flood,udp flood,icmp flood等。syn最常见,这是因为它利用了tcp三次握手设计的缺陷。
应用层ddos是发生在三次握手已经完成环境下,发起攻击的ip都是真实的。应用层ddos攻击与防御方法如下:
1.限制请求频率。通过ip地址和cookie定位一个客户端,若该客户端在一定时间内请求过于频繁则对之后的请求冲顶想到一个出错页面。可以通过大量代理服务器不断更换ip攻击服务器。雅虎提供过一个算法判断客户端的请求频率。
2.验证码。提前将验证码图片生成好,以哈希过的字符串作为验证码图片的文件名,并且文件名需要随机化防止通过彩虹表建立验证码与明文的对应关系。
3.修改配置参数以缓解ddos攻击。如调小timeout,增加maxclient等。
4.让客户端解析js文件或flash文件以判断客户端是不是浏览器。
利用服务器的漏洞或设计缺陷直接造成ddos。
1.slowlories攻击。恶意占用有限的链接不释放(有限资源的无限滥用),在http头中只有一个换行符\r\n(正常有俩),服务器就会等待第二个换行符。这时只要再发送任意http头就可以保持链接。今天依然有效。
2.http post dos。发送post包时,指定一个很大的content-length值并以很低的速度发送,保持链接不断开。在连接数多了以后就会造成ddos。
3.server limit dos。http包头超出限制。比如通过xss写入一个超长的cookie,在刷新页面时会发送包涵这个cookie的http头,服务器会因为超长拒绝请求,从而导致ddos。
还有就是正则表达式会引发ddos。如:
1 | ^(a+)+$ |
在输入4个a时会遍历16次,但输入输入16个a时会遍历65536次。当用户恶意构造输入时,会大量消耗cpu和内存资源。
12
好久没更博了到处混吃混喝 (。^▽^) 嘿嘿。
复习了访问控制和密码学,虽然忘了一些但看书看一会儿就想起来了。
然后看了web框架安全。主要讲了mvc框架(模型m,视图v,控制器c)的安全。简单来说就是"在正确的地方做正确的事" 。
举几个例子:
1.在对页面进行渲染的view层可以选择框架提供的编码方法但如果全部使用同一种编码方法很可能被攻击者绕过。所以可以根据是否有细分场景的不同编码方式来判断安全方案是否完整。
2.在对抗csrf时,web框架可使用token(随机数)解决问题。http post请求主要用来处理写操作(增删改),而post不足以对抗csrf。
3.http返回头为了防止crlf注入攻击可以设置限制目的地址。
4.使用orm框架针对sql注入攻击。
5.一些框架自身的bug
烧烤夜
下午早些看了另一个简单的注入技巧:进行UNION联合操作,通过报错来知道正确的数据库信息链接。
今天看的是书上文件上传漏洞的内容。
- 文件上传本身没有问题,但若用户上传了一个可执行的脚本并通过此脚本执行了服务器端命令的功能,这就是文件上传攻击。文件上传要满足3个条件:1.文件要被Web容器解释执行。 2.用户能够访问到此文件。 3.不能在上传时被修改。
- 可以通过:
1.修改后缀名避免黑名单筛选。
2.截断字符0x00。xxx.php[\0].jpg会被某些函数判断为xxx.php。
3.伪造文件头,将真实的文件附在合法的文件头后。正常情况判断前10个字节就可以判断真实类型。
4.利用apache中不认识的后缀名。(修复)
5.利用IIS中;(截断字符) 。
6.若有上传权限同时开启webdav(脚本资源访问)。可以用put上传文本文件后用move方法改写为脚本文件,从而执行webshell。
7.钓鱼。先将文件上传到目标网站,再传播合法url。 - 防御:
1.上传的文件设置为不可执行。例如先做静态处理。
2.判断文件类型。使用白名单。
3.设置权限和随机数。最小权限原则和随机数能极大增加攻击成本。
4.单独设置文件服务器的域名。起到隐藏作用。
IG丶XiaoXiao
最开始认识孙亚龙因为他是we的对手,反向大招的琴女,被冯卓君按在地上摩擦。凭借规则优势去了上海全明星,在红方下外塔和蓝方上二塔那两次q,是他的游戏巅峰。之后他退出了游戏没有再重连,不卖肉松饼是一个承诺。他去做了主播一边还做着解说,靠运气碰到了黑暗之光零封白盾的比赛,疯狂输出后拿到元年的第一解说。
不专注的几天
循着小葱的建议开始看服务器端的知识。
-
注入攻击的本质:1.能够用户控制输入 2.原来执行的代码拼接了用户的输入。判断sql漏洞是否存在往往需要使用盲注的技巧(一种猜测),通过真假条件语句判断是否可以注入,通常还需猜测参数是否被单引号包围。然后使用一次次的条件语句可以判断出数据库表名,
用户字段名,用户密码长度和具体密码等。
$ and 1=2 and ‘a’=‘a’ //构造注入,若页面返回错误则进行真值判断
$ and 1=1 and ‘a’=‘a’ //若页面返回成功说明存在漏洞
$ and (select count() from data)>0 and ‘a’='a //猜测表名是否是data,可反复测试。若成功返回值>1
$ (select count(uname) from data)>0 //猜测用户字段为uname。同理猜测密码字段等信息。
$ Select count() from data where uname=‘p1ggy’ and len(upass)>1)>0 //猜测密码字段长度。修改len(upass)得到准确的值。
$ (Select count() from data where uname=‘p1ggy’ and mid(upass,1,1)<=‘9’)>0 //猜测第一位密码是否为数字。把upass的第一个字符提出来。确定字母还是数字后缩小范围。
$ (Select count() from data where uname=‘p1ggy’ and mid(upass,1,1)>=‘a’)>0 //猜测第一位密码是否为字母。
sql注入攻击主要依赖数据库的攻击,所以数据库攻击技巧十分重要。 -
数据库攻击技巧。
1.自动化注入工具可以帮助完成上述步骤
2.修改系统文件时可用load_file(),into dumpfile,load data infile.
3.加载用户自定义函数UDF执行命令。
4.在存储过程(功能类似udf)执行系统命令。有xp_cmdshell执行系统命令,xp_regread操作注册表等
5.超长值。strict_all_table,开启时输入长度超过限制会error,关闭时只有warning。当关闭时超长数据会插入成功,使用超长数据作为用户名可能会造成越权访问。选择时admin(55个空格)x等于admin。