Python代碼審計中一些需要重點關注的項


SQL注入:

如果是常規沒有進行預編譯,或者直接使用原生的進行拼湊,那么在view的時候就需要多去觀察了

【PythonSQL預編譯】https://www.cnblogs.com/sevck/p/6733702.html

如果項目使用例如Django,雖然Django自己封裝了操作數據庫的函數,但是Django也支持raw:

def index(request, *args, **kwargs):
        for e in Person.objects.raw('select * from FIRST_Person WHERE first_name = ' + '"' + request.GET.get('user') + '"'):
            print(e.last_name)
        return render(request, 'home.html')

 

命令注入:

os,commands,subprocess,multiprocessing,pty,Cpickle/pickle,PyYAML

如果使用了這些需要多去關注和跟蹤相關的信息。

例如:

os.system("curl %s",(request.get("url")))

那么攻擊者也可以進行拼湊,例如 http://a.com|id等等多種方式去繞過,姿勢有$IFS\;\#,等等,

pickle可進行序列化和反序列化操作:

# Create your tests here.
import os
import pickle


# Exploit that we want the target to unpickle
class Exploit(object):
    def __reduce__(self):
        return (os.system, ('ls',))


shellcode = pickle.dumps(Exploit())

pickle.loads(shellcode)

在pickle中,查了網上的,發現關於解決辦法,如何修復一直沒有人提。

昨天和Phithon交流的時候,總結如下:

https://docs.python.org/3/library/pickle.html?highlight=pickle#restricting-globals

pickle默認也支持做白名單,用戶自定義find_class方法即可。

 

YAML注入:

可參考:

http://blog.knownsec.com/2016/03/pyyaml-tags-parse-to-command-execution/

 

參考:

【linux下不用空格執行帶參數的5種姿勢】https://www.cnblogs.com/sevck/p/6072721.html

 

XSS和其他平台類似,再次不再累贅,主要介紹python特點中需要關注的點.

 

CSRF:

Django,默認自帶且支持防止CSRF,如果取消需要增加修飾符

 

越權/邏輯/水平漏洞:

python開發很多可能沒有特別的關注這方面,在做黑盒或者白盒審計的時候需要多去關注此方面

 

------------------------------

自動化檢測:

筆者在甲方安全實踐過程中,開發了代碼審計系統,並且上線檢測,發現了一些高危、甚至嚴重的安全漏洞。

在做跟蹤安全問題總結了如上,需要關注的安全點;提供pythoner、secer參考:

[甲方安全建設之路]自動化代碼審計系統 https://www.cnblogs.com/sevck/p/10432981.html

360的安全客文章也總結的不錯,可以參考:

https://www.anquanke.com/post/id/87007

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM