计算机网络安全基础知识4:命令执行漏洞,危害极大,DVWA演示命令注入漏洞攻击网站,防御命令注入执行漏洞,low,medium,high,impossible
2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!
考网警特招必然要考操作系统,计算机网络,计算机网络安全基础知识,由于备考时间不长,你可能需要速成,我就想办法自学速成了,课程太长没法玩
系列文章:
【1】计算机网络安全基础知识1:渗透测试,网络连接的核心TCP/IP体系结构,公网,内网,ip地址和端口
【2】计算机网络安全基础知识2:http超文本传输协议,请求request消息的get和post,响应response消息的格式,响应状态码
【3】计算机网络安全基础知识3:网站漏洞,安装phpstudy,安装靶场漏洞DVWA,搭建一个网站
文章目录
- 计算机网络安全基础知识4:命令执行漏洞,危害极大,DVWA演示命令注入漏洞攻击网站,防御命令注入执行漏洞,low,medium,high,impossible
- @[TOC](文章目录)
- 计算机网络安全基础知识:命令执行漏洞,危害极大
- 如何防御命令执行和命令注入漏洞:过滤命令连接符
- 我们看看命令注入执行漏洞:high级别防御
- 开发中算法规范,绝对防御,绝对安全impossible
- 黑客攻击怎么拿到你的cmd?
- 总结
文章目录
- 计算机网络安全基础知识4:命令执行漏洞,危害极大,DVWA演示命令注入漏洞攻击网站,防御命令注入执行漏洞,low,medium,high,impossible
- @[TOC](文章目录)
- 计算机网络安全基础知识:命令执行漏洞,危害极大
- 如何防御命令执行和命令注入漏洞:过滤命令连接符
- 我们看看命令注入执行漏洞:high级别防御
- 开发中算法规范,绝对防御,绝对安全impossible
- 黑客攻击怎么拿到你的cmd?
- 总结
计算机网络安全基础知识:命令执行漏洞,危害极大
我可以关闭,删除你的电脑系统
因为开发者没有做严格的安全测试
可能导致攻击者输入很多很多可怕的东西。
网站有网络连接检测功能
输入一个ip地址,然后检测是否可以连接它
正常情况下,网站是可以正常去检测网址是否可以连通的
命令连接符
|管道命令,且,俩都执行
;
&
||,仅仅cmd1失败,才去执行cmd2
&&
如果cmd2是shut down的话,你的电脑就得gg
你说这个危险不危险??????
可怕不可怕????
常见的Windows命令是
那DVWA如何模拟这种攻击呢?
上一篇文章介绍了它的安装
我们去访问这个界面
我们去配置安全配置
low是没有防御
这样的话,就可以攻击了
不同的等级,好说
然后你模拟攻击
卧槽,我屁股加了别命令也不行啊?????
本地可以,操蛋
C:\Users\WYY>whoami
desktop-8r2o0p1\wyy
C:\Users\WYY>
这就尴尬了
为毛
原因是我刚刚设置low安全级别,没成功
重新来
这样你才能去攻击哦
美滋滋
攻击成功了
可试试这个命令哈哈哈
127.0.0.1&shutdown
gg
玩这个命令看看
127.0.0.1 & ipconfig
这些结果就是本地运行
ipconfig中的结果
网站就截取了你的信息
看view source
就这样了你看看
Command Injection Source
vulnerabilities/exec/source/low.php
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input 输入的是IP地址,这里就是刚刚窗口那个ip,赋值给target
$target = $_REQUEST[ 'ip' ];
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows,这里是php的函数,它可以执行:ping target命令
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
?>
这是PHP代码
我们看看
这里就是target,可以使被被人注入别的命令哦!!!!
这就是命令执行漏洞,命令注入漏洞
如何防御命令执行和命令注入漏洞:过滤命令连接符
将其替代,或者判断,干废它
我们去看看DVWA,它是如何防范的?
调整安全等级
你看代码中就有删除非法字符的骚操作了
这就是防御
Command Injection Source
vulnerabilities/exec/source/medium.php
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];
// Set blacklist
$substitutions = array(
'&&' => '',
';' => '',
);
// Remove any of the charactars in the array (blacklist).
//这里是移除在arr中的字符,&&,;但是没有删除|,||,&,看来还有问题
//字符串替换更改,将前面的替换为空字符
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
?>
你现在就不能执行啰!!!!!
这就是防御成功了
它只防御了2个
还缺仨
执行这个
127.0.0.1&whoami
看来还是不安全哦
127.0.0.1&&whoami
源代码有,能看到,就能知道怎么防御的——白盒测试
黑盒测试,你攻击它,但是看不到它的代码
试试就行
我们看看命令注入执行漏洞:high级别防御
目前试试 这个攻击
127.0.0.1|whoami
试试这个攻击
127.0.0.1||whoami
好像是不能查到哦
试试这个攻击
127.0.0.1&whoami
127.0.0.1;whoami
好像是没有屏蔽|
||和&和;都屏蔽了
看看原码
这就牛逼了
Command Injection Source
vulnerabilities/exec/source/high.php
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = trim($_REQUEST[ 'ip' ]);
// Set blacklist
$substitutions = array(
'&' => '',
';' => '',
'| ' => '',
'-' => '',
'$' => '',
'(' => '',
')' => '',
'`' => '',
'||' => '',
);
// Remove any of the characters in the array (blacklist).
$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
?>
基本字符都拦截率了
这种在开发中经常遇到
有的人就喜欢按空格
拦截了一个|空格
你看|空格,可以拦截
但是|不能拦截,怪不得……………………
127.0.0.1| whoami
去掉空格去掉就OK
127.0.0.1|whoami
牛了吧!
127.0.0.1|dir
所以说开发一定要小心
开发中算法规范,绝对防御,绝对安全impossible
上面那个漏洞就不存在了
127.0.0.1|whoami
懂?
看看源代码
Command Injection Source
vulnerabilities/exec/source/impossible.php
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
// Get input
$target = $_REQUEST[ 'ip' ];
$target = stripslashes( $target );
// Split the IP into 4 octects
$octet = explode( ".", $target );
// Check IF each octet is an integer
if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {
// If all 4 octets are int's put the IP back together.
$target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];
// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}
// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}
else {
// Ops. Let the user name theres a mistake
echo '<pre>ERROR: You have entered an invalid IP.</pre>';
}
}
// Generate Anti-CSRF token
generateSessionToken();
?>
这里可不是替代,直接判断你的pi地址是不是四个数字
不是就gg
绝对安全,随你输入啥都不行
关键的地方,搞出来
分别判断四个部分是不是数字
是才行
就是干掉所有无关字符即可
这都是数据结构与算法中讲的清清楚楚,我写过很多关于字符串的骚操作。
ip是标准的四个数字,这些条件都得满足,否则gg
这次俺是开发人员的典范!!!!!
你没法攻击,懂???
黑客攻击怎么拿到你的cmd?
黑客可以通过命令注入漏洞,运行一个拦截命令,然后控制你的电脑里面的cmd,然后就可以干死你的电脑了
懂了没?命令注入执行带来的结果非常恐怖
温馨提示
总结
提示:重要经验:
1)
2)学好oracle,操作系统,计算机网络,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。