当前位置:首页 » 网页前端 » shellweb
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shellweb

发布时间: 2023-01-22 04:25:47

1. Shell脚本根据Hash值判断web服务器页面是否被更改

      当页面被恶意木马攻击更改后,监控状态脚本并不能检测出异常,但是Web的页面已经存在相当大的安全隐患.所以能不能寻找到一种方法判断自己所负责的Web服务器页面内容是否遭到恶意木马的攻击和修改显得十分重要.通过Hash值的方法可以非常高效的检测到WEB服务器页面的数据内容是否完整,如果页面内容被恶意木马更改,新页面的Hash值是不同于原始的Hash值的,我们就可以以此作为判断的依据!

获取Hash值的方法:

md5sum /var/www/html/index.html

url="Web服务器页面地址"

如 http://127.0.0.1/index.html

date=$(date +"%Y-%m-%d %H:%M:%S")

source_hash="获取到的原始Hash值"

url_hash=$(curl -s $url | md5sum | cut -d ' ' -f1)

if [ "$url_hash" != "$source_hash" ];then

        mail -s  Hash is changed  root@localhost <<- EOF

        检测时间为:$date

        数据完整性检验失败,Hash值不同,$url,页面数据被更改

        请尽快排查异常

        EOF

else

        cat >> /var/log/http_check.log <<-EOF

        $date "$url,数据完整性校验正常"

        EOF

fi

chmod +x /check_http_hash.sh

/check_http_hash.sh

cat /var/log/http_check.log

2019-11-23 15:38:55 "http://127.0.0.1/index.html,数据完整性校验正常"

修改/var/www/html/index.html文件的内容,模拟网站页面被更改的情况!

/check_http_hash.sh

检测时间为:2019-11-23 16:00:08

数据完整性检验失败,Hash值不同,http://127.0.0.1/index.html,页面数据被更改

请尽快排查异常

这一个脚本跟上一篇文章的 http服务状态监测脚本 两者相辅相成,也可以考虑把它们两个合并成同一个脚本!并且一同添加到周期性计划任务中!

2. xshell关闭web服务

1、在我们的电脑上打开xshell,进行远程连接linux系统,连接到之后,输入“cdtomcat安装路径bin目录”,按回车键进去tomcat的bin目录。
2、进去tomcat的bin目录之后,输入“。/shutdown。sh”命令,关闭tomcat。
3、按回车键,可以看到linux系统上的tomcat关闭了。
4、输入“。/startup。sh”命令,启动tomcat。
5、可以看到已经启动了tomcat。

3. web shell 提权问题。

得到最简单的权限后,在shell里面寻找能够用来提权的漏洞,比如:
1.安装了serv U ,很多web shell里面自带的就有serv U的提权,执行就得到管理员权限,建立一个管理员用户,然后远程连上去,这台服务器就是你的了。格式化都行
2.寻找可读可写的文件夹,一般都是IIS所有目录,临时目录,或者all users下面的某些目录
然后将cmd.exe上传到这个目录里面,在web shell里面就可以执行dos命令,或者上传最新最牛叉的0day提权工具 pr.exe 瞬间提权
3.寻找网站,看是否安装了sql server ,如果网站刚好安装了sqlserver ,并且你可以从网站源文件中得到sa的用户名密码,这台电脑你就拥有了管理员
......还有很多很多。。太累人了。

最重要的一点,提到管理员权限后,记得留shift后门以及把战场打扫干净。

4. 如何shell命令编写自己的Web日志分析脚本

一、读取文件
按照上面的思路,先解决读取问题。这里我用了判断语句,起初我是想写出类似于 access=more
/usr/access*.*,将这个路径全部加到变量里,方便判断,因为在shell里,只能将固定文件、文件夹作为变量,变量中不能加*号(我是没找到别的方法,有知道大牛请提点下小弟),所以就想了个笨办法,用匹配关键词的方式来判断特定目录下,是apache日志,还是weblogic日志,还是IIS日志,具体判断方法如下:
if ls -l /usr/ | egrep "access";then
more /usr/access*.* | egrep "多个关键词"
else
more /usr/ex*.log | egrep “多个关键词”
fi
这样的方式来进行判断,但是这样判断有个缺点,就是中间件日志在/usr/目录下,只能存在一种,比如同时存在apache和IIS的日志,就会优先判断apache的,进而不会执行IIS日志分析的语句。而且,为了不跟之前的历史数据混乱,在脚本执行开始,清空了下数据。
file=/usr/nmgxy/
if [ -e "$file" ];then
echo "日志目录存在,跳过创建过程,该操作会清空/usr/nmgxy/目录下所有数据"
echo "按回车键开始清空数据,结束请点击Ctrl+c"
read key
rm -r /usr/nmgxy/*
mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/
else
mkdir -p /usr/nmgxy/ /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/
/usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/
fi
echo "分析结果日志保存在/usr/nmgxy/目录下"
echo ---------------------日志目标文件---------------------------
if ls -l /usr/ | egrep "access";then
echo --------------------统计出现次数最多的前20个IP地址-----------------
cat /usr/access*.* |awk '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/top20.log
echo "统计完成"
二、定义攻击特征
日志读取的问题解决了,接下来就是定义攻击特征的事儿了,攻击特征比较好定义。例如,SQL注入攻击的判断:
echo ------------------------SQL注入攻击sql.log----------------
echo "开始分析存在SQL注入的攻击行为,并将结果保存在/usr/nmgxy/sql/目录下"
more /usr/access*.* |egrep
"%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec|
information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"
>/usr/nmgxy/sql/sql.log
echo "分析结束"
awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1
echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址"
cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log
echo ----------------------------------------------------------
more /usr/nmgxy/sql/top20.log
echo "统计结束"
我把一些常见的SQL注入攻击的特征写到了里面,去掉了MSSQL数据库存储过程以及MSSQL数据库才会出现的一些注入语句。
三、输出匹配到的含有攻击特征的记录
将匹配到的攻击特征内容,重新输出到了另外一个log里面,相当于做了一次筛选/usr/nmgxy/sql/sql.log
more /usr/access*.* |egrep
"%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec|
information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"
>/usr/nmgxy/sql/sql.log
然后二次分析这个筛选过的文件,统计SQL注入攻击出现的次数
awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1
输出完毕后,将攻击出现最多的前20个IP地址进行统计并显示到屏幕上
echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址"
cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log
echo ----------------------------------------------------------
more /usr/nmgxy/sql/top20.log
echo "统计结束"
四、输出结果
这个在代码开头,创建了一些文件夹,用来存放筛选过的记录
mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/
中间删删改改折腾了好几次。后来针对特定的攻击,我们比较关注(重点是比较好写的= =)的内容做了HTTP响应请求200/500的判断,并输出结果。
echo -------------------------getshell-getshell.log----------------
echo "开始分析存在getshell的攻击行为,并将结果保存在/usr/nmgxy/getshell/目录下"
more /usr/access*.* |egrep "
eval|%eval|%execute|%3binsert|%20makewebtaski%20|/div.asp|/1.asp|/1.jsp|/1.php|/1.aspx|xiaoma.jsp|tom.jsp|py.jsp|k8cmd.jsp|/k8cmd|ver007.jsp|ver008.jsp|ver007|ver008|%if|\.aar"
>>/usr/nmgxy/getshell/getshell.log
echo "分析结束"
echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/getshell/ok.log"
more /usr/nmgxy/getshell/getshell.log | awk '{if($9=200) {print $1" "$2"
"$3" "$4" "$6" "$7" "$8" "$9}}' >/usr/nmgxy/getshell/ok.log
more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2"
"$3" "$4" "$6" "$7" "$8" "$9}}' >>/usr/nmgxy/getshell/ok.log
echo "二次分析结束"
awk '{print "共检测到getshell行为" NR "次"}' /usr/nmgxy/getshell/getshell.log|tail -n1
echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址"
cat /usr/nmgxy/getshell/getshell.log |awk -F "[" '{print $1}' |sort
|uniq -c |sort -rn |head -20 >/usr/nmgxy/getshell/top20.log
echo ---------------------------------------------------------------
more /usr/nmgxy/getshell/top20.log
echo "统计结束"
统计HTTP响应状态,IIS和apache有点区别。apache我以默认空格为分隔符,判断第9个分隔符是否为200或500,如果等于,则输出全部内容
more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}'
而IIS的,我则是用获取关键词的方式,来进行判断。
more /usr/nmgxy/getshell/getshell.log | egrep " 200" >/usr/nmgxy/getshell/ok.log
用egrep的方式,关键词为" 200",200前面有个空格,如果不加空格的话,很容易跟其他的参数混起来,那个时候误报就不是一点点了。例如asp?id=200,所以加入了空格做区分。
IIS和nginx的思路类似,唯一的区别就是特征码,稍微有点改动而已,这个就不一一例举了。思路就是这个思路,其实后期想把报告整体输出成HTML的方式,估计工作量挺大,这个还是得闲下来的时候,慢慢修改吧。
PS:这个脚本虽然写的比较粗糙,但是精确度还是有的,测试了几十次,精确度能达到至少80%以上。
分析1个多G的日志文件,需要大致约30多秒左右,我是在虚拟机里做的测试。虚拟机ubuntu系统,1G的内存。
不见得能帮上大忙,至少可以给大家在分析日志时节省点时间。。。。
先贴出apache、weblogic、IIS的脚本代码,weblogic的从网盘直接下载就好。apache、weblogic、IIS的脚本代码:

5. 如何用xshell搭建web环境(linux)

准备好连接linux服务器的工具,推荐用xshell和xftp。
xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。
下载地址:http://www.jb51.net/softs/56322.html
Xftp 是一个基于 MS windows 平台的功能强大的SFTP、FTP 文件传输软件。
下载地址:http://www.jb51.net/softs/81853.html
安装完毕后打开xshell
linux一键安装web环境全攻略
设置云服务器登录信息

设置服务器帐号密码

设置字符集编码

设置好了就点击ok保存

一切准备就绪,让我们连接看看云linux服务器的庐山真面目吧!

黑不隆冬的,啥都没有,这就是linux的shell啦。shell(壳)到底是什么东东呢?
* Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
linux作为服务器专用操作系统,主要就是默默的待在机房提供各项网络服务的,为了节省系统资源,像windows那样华丽丽的用户桌面就默认不加载了。当然现在越来越多的用户使用linux作为日常家庭办公用操作系统,所以就有了像gnome、kde这样超华丽的桌面。不过作为服务器使用还是推荐用命令行界面吧,毕竟省一点资源,网站打开可能会更快一点嘛!
打下面的命令去主目录(/home)看下
cd /home

现在用键盘敲入下面这行命令
cd /home && mkdir tmp && cd tmp
用xftp上传环境安装文件

回到shell界面,用ll命令看下情况
ll
是不是多了一个sh目录

接下来按照说明,分步骤敲入安装命令
chmod –R 777 sh
cd sh
./install.sh
出现了一个选择提示,进入web服务器版本的选择界面

这里您可以根据需要选择apache或者nginx服务器,这里是2个服务器的介绍
apache:http://ke..com/view/28283.htm
nginx:http://ke..com/view/926025.htm
引用
在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
这里我们选择nginx,输入n,回车

到这里,我们就正式进入环境安装环节了。你可以泡杯茶休息下。一般这个过程会持续半个小时的样子。
为了防止断掉和服务器的连接,可以新开一个shell窗口,将鼠标挪到窗口标签栏,右击,如下图所示:

可以看到,新开了一个窗口

输入top命令

可以看到一直在跳动的系统资源统计

好了。做完了这一些就让我们静静的等待吧!程序正在自动编译安装服务!

到这个界面说明安装已经结束了。
大家有疑问了。那我怎么登录ftp和mysql呢?
在命令行里输入:
cat account.log

看到了没?
ftp的用户名是:www
mysql的用户名是:root
密码就在屏幕上了!
好了。所有配置都已经完成了。是不是很简单!
----------------------------------------------------------------------
网站目录:/alidata/www
服务器软件目录:/alidata/server
Mysql 目录 /alidata/server/mysql
Php目录/alidata/server/php
选择了nginx 那么会有一个nginx 目录在
/alidata/server/nginx/
Nginx 配置文件在/alidata/server/nginx/conf
Nginx虚拟主机添加 你可以修改/alidata/server/nginx/conf/vhosts/phpwind.conf
选择了apache那么会有一个httpd 目录在
/alidata/server/httpd
apache 配置文件在/alidata/server/httpd/conf
apache虚拟主机添加 你可以修改/alidata/server/httpd/conf/vhosts/phpwind.conf

6. 如何使用Windows PowerShell Web Access

如何使用Windows PowerShell Web Access?

微软在Windows Server 2012中引入了Windows PowerShell Web Access功能,该功能允许管理员通过网络控制台远程运行PowerShell命令和脚本。
AD:WOT2015 互联网运维与开发者大会 热销抢票
微软在Windows Server 2012中引入了Windows PowerShell Web Access功能,该功能允许管理员通过网络控制台远程运行PowerShell命令和脚本。

在Windows Server 2012 R2或Windows Server 2012上设置PowerShell访问需要用到Web服务器(IIS)、.NET Framework 4.5和Windows PowerShell 3.0或Windows PowerShell 4.0。你可以通过在服务器管理器中的Add Roles and Features向导启用PowerShell Web Access组件。

但是,Web访问会带来一些安全风险,所以你应该提前启用一些安全机制。确保PowerShell Web Access包含基于cmdlet的授权规则,并使用Web服务器(IIS)的安全特性。

例如,如果你知道远程PowerShell连接的确切的IP地址或范围,你可以实施地址限制,指定允许连接的IP地址或地址范围。

PowerShell Web Access的默认URL是https:// < server_name > / pswa。用户登录时必须知道要访问或管理的远程计算机的名称或IP地址。这些用户必须是远程计算机的授权用户,计算机必须配置为允许远程管理。如果用户未退出,连接将在20分钟后自动断开。

正如你在截图中所看到的,PowerShell Web Access在底部有几个按钮:提交、取消、箭头和退出,还能显示你当前连接的远程计算机的名称或IP。

PowerShell Web Access截图

PowerShell Web Access同常规远程Windows PowerShell会话共享同样的限制,因此有一些PowerShell特性和功能不受支持。

PowerShell Web Access也有一些特定的基于web的访问限制。例如,功能键(键盘快捷键)不能工作。输入/输出的颜色不能改变,尽管输出的颜色和风格可通过运行脚本实现改变。

另外,每次只能连接一台远程计算机,在多个选项卡中无法打开PowerShell Web Access。

最后,PowerShell Web Access不要求使用PowerShell和任何远程访问软件,你使用的网络控制台计算机或设备上也无需安装浏览器插件。微软目前只列出了一些受官方支持的桌面浏览器(IE、Firefox、Chrome和Safari),但在移动浏览器(Windows Phone、Android和iOS)上也已经做了成功的测试。具备支持JavaScript、cookies并且能通过HTTPS/SSL连接到安全站点的浏览器的任何计算机或设备都支持PowerShell Web Access功能。

7. web shell是什么

简单的说就是网站权限。
例如 网页木马上传到网站的时候。这个网页木马就可以叫做webshell

8. shell脚本怎么调用webservice接口

如果是做服务端比较麻烦,如果是客户端,那就考虑用curl命令。
curl可以发起http请求,可以发送post,webservice无非就是post一堆数据,手边没有现成的webservice,没法抓包给你写例子,你自己试下。
大致的语法像这样:
curl -d "要post的数据" http://webservice地址
你可以用现有的webservice抓个包,然后填到上面的命令里。